|
|
|
|
Конкурс #1 (Легкий, $20) |
|
|
Напишите программу Euphoria, которая читает со стандартного
входа специальную строку-ключ, содержащую 26 произвольно
перемешанных букв алфавита, например,
TUVXWYZABDECFHIJKGLMOPNQSR
Эта строка означает, что ваша программа должна преобразовать
все 'A' в 'T', все 'B' в 'U', все 'C' в 'V' и т.д.
Напишите обратную строку-ключ для стандартного выхода.
Затем читайте следующие строки английского текста со стандартного
входа, преобразуйте буквы в соответствии со строкой-ключом и
выводите их на стандартный выход.
В качестве теста, вы должны будете уметь читать свой выход и
получать оригинальный файл с оригинальной строкой-ключом
в начале файла.
Примечание: Вы должны сохранить верхний/нижний регистры
в английском тексте.
Кроме того, требуется подсчет числа выпадений каждой
из букв во входном файле. Должен создаваться специальный файл
с именем "letters.txt", в котором содержится список из 26 букв
и их количеств, отсортированный по убыванию количества букв,
т.е.
E 63
T 52
и т.д.
Подсчет для (скажем) E должен быть суммарным для 'E' и для 'e'.
Путем обработки достаточно больших файлов с английским текстом
вы должны будете уметь получать статистические данные о частоте
букв, которые могут стать некоторым основанием для расшифровки
английского текста (тяжелая проблема ниже). Например,
в английском тексте буква 'E' обычно встечается чаще других.
Правильность, затем скорость, определят победителя.
|
|
|
| |
|
|
|
|
|
|
Конкурс #2 (Средний, $30) |
|
|
| |
|
Прочитайте список из 50.000 английских слов и разместите их в памяти.
Вы можете получить этот список в Архиве файлов, это
тестер правописания Джанко.
Напишите библиотечную функцию, которая будет выдавать ряд,
содержащий все слова из словаря, соответствующие заданному
шаблону. То есть, задавая в качестве аргумента для вашей
функции {1,1,2,3,4}, вы должны получать ряд, содержащий все
слова, состоящие из 5 букв, где первые две буквы одинаковые,
а следующие 3 - разные. Пользователь также должен быть
в состоянии задавать определенные буквы, т.е.
{'E', 1, 2, 3, 1, 3} должно давать все 6-ти буквенные слова,
начинающиеся с 'E' и соответствующие заданному шаблону.
Имейте в виду, в этом случае ни 1, ни 2, ни 3 не могут
быть 'E'.
Правильность, затем скорость, определят победителя.
|
Конкурс #3 (Тяжелый, $50) |
|
|
Напишите программу, которая пытается расшифровать текстовый файл,
зашифрованный с использованием простого алгоритма
один-в-один (каждая буква алфавита заменяется другой буквой).
Используйте статистически-известные частоты букв и слов в
английском языке. Сверяйте слова с шаблонами, выбираемыми
из словаря английских слов, применяйте любой другой алгоритм,
который вы можете придумать, чтобы расшифровать входной текст.
Ваша программа может оценивать прогресс в своей собственной
работе по числу расшифрованных слов, которые уже удалось
найти и в словаре.
Выиграет та программа, которая позволит получить максимальное
число правильно расшифрованных слов на некоторых пробных
английских текстах, задаваемых RDS.
Максимальное работное время не должно превышать 5 минут
(на машине с Pentium 350 Mhz).
Имеется несколько эвристических (по случаю) методов, которые
могут помочь. Например, отсеивание однобуквенных слов,
'I' или 'a', очень частых слов вроде "the" и т.д.
Вы можете, вероятно, выиграть этот конкурс, вооружившись
словарем на 50000 слов, а также вспомнив тот английский язык,
который проходили в школе.
|
|
|