Войти Создать аккаунт

Шифровальщик · Шаг 3 из 4

Подобрать сдвиг

Команда перехватила записку, зашифрованную Цезарем: все буквы сдвинуты на одно и то же число. Сдвигов всего 33 — можно перебрать все и посмотреть, при каком текст больше всего похож на русский. А похожесть можно посчитать: у частых букв языка большой вес, у редких маленький.

Что сделать

Найдите, на сколько сдвинули буквы шифровки: переберите все сдвиги и выберите тот, при котором расшифровка набирает больше всего очков.

Что приходит

  • shifrovka — текст, где все русские буквы сдвинуты вперёд на одно число

  • chastoty_yazyka — словарь «буква → вес»: насколько буква частая в языке; каких букв нет — у тех вес 0

Что вернуть

Сдвиг от 0 до 32, при котором очков больше всего; при равенстве — меньший.

Допишите функцию podobrat_sdvig в редакторе справа. Результат верните через return — то, что напечатано, на проверку не влияет.

В проекте

Утилита передаёт podobrat_sdvig в шаг 4: каждый столбец шифровки Виженера — это Цезарь, и его сдвиг ищет ваша функция. Решите шаг — и утилита начнёт взламывать.

Пример

Шифровка «кхйхихч х цхшщжисл» — это «договор о поставке», сдвинутый на 7. Сдвиг 7 возвращает буквы на место, и «о», «а», «е», «т» набирают очки по таблице; у любого другого сдвига очков меньше — ответ 7.

Тот же пример кодом
Перед вызовом
chastoty = {"о": 11, "е": 8, "а": 8, "и": 7, "н": 7, "т": 6}
Вызов
podobrat_sdvig("кхйхихч х цхшщжисл", chastoty)
Вернуть
7
Ctrl+Enter — проверить

Обсуждение

Вопросов пока нет.

Войдите, чтобы спросить.