Python. Взлом шифров. Продолжение-2.

На прошлом уроке мы написали функцию сопоставления слов. Сегодня продолжим эту тему. Допустим, у нас есть некий текст в котором нам надо найти место наилучше подходящее под это слово. Пишем вот такой код:

Программа сообщит:

Минимальный результат 0
Найденное слово проба

Заменим в строке

слово «проба» на слово «прога» и получим уже вот такой результат:

Минимальный результат 73
Найденное слово прога

Теперь попробуем поискать словом во всем файле:

И тут я напоролся на грабли. Я специально привел код с ошибкой, чтобы рассказать об этих граблях. Итак, если вы запустите файл несколько раз, то каждый раз будете получать разные результаты! Сначала я не мог понять, почему так происходит. Затем выполнил вот такой код:

И увидел, что каждый раз порядок ключей в словаре разный.  Глюк можно исправить, если вместо словаря загружать буквы сразу в список:

Теперь можно подставлять слова из полученного на предыдущем этапе списка слов, начиная с верха списка, где у нас наиболее часто встречающиеся слова. Например, нас слово «Глава» у меня выдало вот такой результат:

Минимальный результат 29
Найденное слово кзала

На слово «Девушка» вот такой:

Минимальный результат 73
Найденное слово девушка

А вот такие слова как «как», «что» уже присутствуют в расшифрованном виде, то есть, по ним выдало, что расхождение 0.

Такой поиск ничего не дал, поэтому попробуем альтернативный вариант, который мы отвергли вначале: смотреть только по количеству различных букв.

Тогда функция сопоставления слов будет выглядеть вот так:

Теперь попробуем точно также поискать слово «Глава». Находим «става». Но, как оказалось, это всего лишь часть слова «оставалось»:

Так идем, проверяя все слова из списка. На слове «Сначала» мы находим слово «фначала». Это что-то уже похожее на правду. Смотрим:

Сразу видим, что кроме замены «С» <-> «ф», можно сделать замены «ж» <-> «х», а также «б» <-> «.»

И получаем уже вот такой выходной результат:

Как видим, задача полной автоматизации расшифровки текста, даже самого простого, далеко не тривиальна. Но, в полуручном-полуавтоматическом режиме она решаема. Для автоматизации тех подходов, которые мы изучили в данном цикле уроком, необходимо освоить различные примеры работы с текстом, чем мы с вами займемся в будущих уроках.

 

Comments

So empty here ... leave a comment!

Добавить комментарий

Sidebar