Форум: "Прочее";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
ВнизКак вам такое тестовое задание? Найти похожие ветки
← →
Александр Иванов © (2007-01-09 14:22) [0]Сделать просят на Яве.
Задача 1 (Mapping). Требуется написать программу, которая на основании исходного файла сформирует все варианты использованных транслитерационных схем. Транслитерационной схемой называется множество отображений (не обязательно однозначных) некоторого упорядоченного множества английских букв в соответствующие им русские буквы согласно следующим правилам:
1. Если одна буква (или сочетание букв) имеет несколько вариантов обратной транслитерации, то в качестве основного варианта выбирается тот, который чаще встречается. Другие варианты сохраняются, но добавляются новые — созданные на основе этих и удлинненные за счет контекста до тех пор, пока не станут однозначными. Например, буква "c" имеет в слове "seeneecyn" вариант "ц", а в слове "moscow" — "к" (при том, что в целом "cow" отображается на "ква"), а в "nocowa" — "с" . Если второй вариант менее частый, то вместо отображения "c->к" должен быть вариант "cow->ква", а вместо "c->с" — "sowa->сова".
2. Если более длинный вариант может быть собран из более коротких, которые не имеют "конкурентов" по количеству, то длинный вариант не нужен. Например, не нужен вариант "sk->ск", если и у "s" и у "k" и так наибольшее количество по преобразованию в соответственно "с" и "к".
Результат записывается в файл (scheme) в формате английский вариант<табуляция>русский вариант<табуляция>количество<перевод строки> Количество --- это сколько раз данная замена встречается в исходном файле (knownmapping).
Файл должен быть отсортирован по убыванию длины английского варианта, далее по убыванию количества, далее по возрастанию в алфавитном порядке.
Главный класс должен называться ru.hflabs.testalgo.retranslit.MappingMaker и принимать следующие аргументы командной строки:
knownmapping_filename, scheme_filename
Задача 2 (Retranslit). На входе:
1. полученная в результате решения Задачи 1 схема обратной транслитерации (scheme).
2. файл, состоящий из записанных по одному в каждой строке транслитерированных (английских) названий (src).
3. файл, состоящий из записанных по одному в каждой строке русских названий (суть есть справочник) (dictionary).
Требуется написать программу, которая выполнит обратную транслитерацию каждого названия из транслитерированного файла по следующиму правилу:
1. Пробуем подобрать такую схему, чтобы результат обратной транслитерации оказался в справочнике (dictionary).
2. Если не получается, то транслитерируем наиболее вероятным способом. При прочих равных выбирается более длинное подмножество из схемы, при одинаковой длине --- с большим количеством.
Результат записывается в файл (output) в формате русское название<табуляция>английское название<табуляция>+, если попали в справочник, -, если не попали<перевод строки>
Главный класс должен называться ru.hflabs.testalgo.retranslit.Retranslit и принимать следующие аргументы командной строки:
scheme_filename src_filename dictionary_filename output_filename
Общие требования:
1. Код должен быть откомментирован
2. Код должен быть покрыт jUnit-тестами
3. Если принять размеры всех файлов (кроме scheme) равных 10000 записей, то Задача 1 должна выполняться не более, чем за 10 минут, а Задача 2 не более чем за 5 минут (P-IV, 3GHz), и обе задачи не должны требовать более 64М оперативной памяти.
4. Если в каких-то местах получится достичь существенной оптимизации, необходимо кратко описать суть решения и желательно оценить выигрыш по сравнению с прямым перебором.
← →
Александр Иванов © (2007-01-09 14:24) [1]Прошу поделиться мнением можно ли такое использовать как тестовое задание. И может ли тестируемый быть уверен, что ему не поручили бостаточно большой кусок, который будут использовать, вне зависимости от результатов тестирования. Т.е. грубо говоря "кинут".
← →
Ega23 © (2007-01-09 14:26) [2]В принципе на нормальный курсовик тянет.
← →
clickmaker © (2007-01-09 14:26) [3]
> при том, что в целом "cow" отображается на "ква"
это уже перевод, а не транслитерация
← →
Александр Иванов © (2007-01-09 14:27) [4]> [2] Ega23 © (09.01.07 14:26)
Волнует даже не размер, а законченность задания, т.е. и комменты им и тесты к коду
← →
Ega23 © (2007-01-09 14:28) [5]
> Прошу поделиться мнением можно ли такое использовать как
> тестовое задание. И может ли тестируемый быть уверен, что
> ему не поручили бостаточно большой кусок, который будут
> использовать, вне зависимости от результатов тестирования.
> Т.е. грубо говоря "кинут".
Слишком тяжёлое - это зависит от вакансии. Может ищут супер-java-программиста на оклад $3000.
А насчёт второго - ИМХО могут и кинуть.
← →
Ega23 © (2007-01-09 14:30) [6]
> Волнует даже не размер, а законченность задания, т.е. и
> комменты им и тесты к коду
>
Я в универе нечто подобное делал в рамках курсовика. Но, конечно, не вылизывал его на супер-производительность, да и исходников с комментами особо никто не требовал.
← →
clickmaker © (2007-01-09 14:31) [7]Одного моего знакомого на интервью спросили про вложенные транзакции в мс скл 2005. После того, как он честно ответил, что не при делах, работодатель печально вздохнул "ну вот, я и сам не знаю, думал вы мне расскажете..."
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.051 c