Меня заинтересовала задача, но, признаюсь, я даже нагуглить не смог теории по этому поводу. Этот тест Егорова был упомянут здесь, и на одном НАРОД-сайте.
Скажите, вы можете поделиться чем-нибудь по этому поводу?
Например, первые семь страниц романа Толстого "Анна Каренина".
Разрешается: Вводить в систему любые правила обработки, предположения об устройстве мира и эволюции, собирать статистическую и прочую информацию с исходного текста и заниматься прочей работой.
Алгоритм
Кратко опишем алгоритм приложения анализа статистических свойств языка:
1. Получение размера файла (файлов) и вычисление объема работ.
2. Инициализация счетчиков встречи символов (байт).
3. Цикл чтения файлов с данными. Чтение файла и проверка его на корректность.
4. Цикл чтения блоков байт файла, например размер 4096 байт, из файла. Последовательный анализ каждого блока и увеличение соответствующих счетчиков.
5. Закрытие файла с входными данными. Проверка на корректность.
6. Создание файла с результирующими данными. Проверка на корректность.
7. Запись в результирующий файл значений символов и количество их встреч, а также частоту их появления в данном тексте.
8. Закрытие файлов с выходными данными. Проверка на корректность.
Алгоритм зашифровывания текстового файла:
1. Открытие исходного файла, его чтение и проверка на корректность.
2. Открытие результирующего файла, проверка его на корректность.
3. Цикл чтения блоков байт исходного файла, например размер 4096 байт. Последовательное сложение по модулю 2 каждого символа блока исходного файла с байтом-ключом. Запись сформированного блока в результирующий файл.
4. Закрытие файла с входными данными. Проверка на корректность.
5. Закрытие файла с результирующими данными. Проверка на корректность.
Алгоритм криптоанализа зашифрованного файла. Для простоты, будем рассматривать лишь частоты встречи одного символа, а двойки и тройки использовать в приложении криптоанализа не следует.
1. Открытие файла статистики исходного языка, проверка его на корректность.
2. Чтение частоты появления одиночных символов языка в память и формирование таблицы анализа.
3. Закрытие файла статистики. Проверка на корректность.
4. Открытие файла статистики зашифрованного файла, проверка его на корректность.
5. Чтение частоты появления одиночных символов языка в память и формирование таблицы анализа.
6. Закрытие файла статистики. Проверка на корректность.
7. Открытие зашифрованного файла, его чтение и проверка на корректность.
8. Открытие файла с результирующими данными. Проверка на корректность.
9. Цикл чтения блоков байт зашифрованного файла, например размер 4096 байт.
9.1. Для каждого байта блока следует произвести его поиск в таблице частот (статистика зашифрованного файла).
9.2. Произвести поиск соответствующего ему символа языка в таблице частот (статистика языка).
9.3. Записать восстановленный блок в результирующий файл.
10. Закрытие файла с входными данными. Проверка на корректность.
11. Закрытие файла с результирующими данными. Проверка на корректность.
Мы бы могли придумать какой-нибудь вес символа. Он должен расти, если встречаются вот такие группы
Но мне кажется, вы как-то притянули решение к ответу.
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.