• Теория
  • Теория

Массивы: Великий дешифровщик

Вы уже помогли Кексу разобраться с шифрами, но алгоритмы шифрования не так просты, как кажется. Кекс решил использовать алгоритм похитрее, чем предыдущий. Поэтому вам нужно написать улучшенную программу расшифровки.

Мяу! Мне нужна новая программа расшифровки.

Есть массив symbols, в котором хранится алфавит (буквы и другие символы).

Есть массив encodedSymbols, в котором хранится зашифрованное сообщение. Каждый элемент этого массива — это индекс символа из массива symbols.

Индексы сдвинуты на величину в переменной shift. Пример: элемент из зашифрованного массива равен единице, значит, с учётом сдвига десять, это символ с индексом одиннадцать в массиве с алфавитом, то есть «К».

Программа дешифровки должна переводить элементы из массива с шифровкой в символы из массива алфавита и склеивать из них расшифрованную строку. Эту строку храним в переменной decodedMessage.

Если индекс со смещением выходит за пределы алфавита, то нужно вычесть из этого индекса длину алфавита (большие индексы шифруют символы в начале алфавита).

Элемент из зашифрованного массива равен 68, значит с учётом сдвига 10, это символ с индексом 78 в массиве с алфавитом. Но в массиве с алфавитом всего 71 элемент. После вычитания из 78 длины массива с алфавитом получаем индекс 7, то есть «Ж».

Прочитав техническое задание, вы поняли что Кекс использовал старый и проверенный способ шифрования информации — «Шифр Цезаря». Этот принцип известен с давних времён.

В основе шифра Цезаря лежит простой принцип: сдвиг символов в исходном алфавите. Например, если взять все буквы русского алфавита, записать их по порядку: «абвгдеёжзийклмнопрстуфхцчшщъыьэюя» — взять какое-нибудь сообщение, например, «привет», найти в сообщении все буквы и сдвинуть их на какое-нибудь расстояние, например, на две буквы вперёд, так, чтобы «п» стало «с», «р» стало «т» и так далее, то зашифрованное сообщение будет «сткджф». Зашифрованное сообщение не сможет прочитать никто, кроме тех, кто знает какой алфавит использовался и на сколько символов был сделан сдвиг в шифре.

Когда будете готовы, жмите Заказчик, принимай программу! в консоли.

Минимальный вид табов
  • index.html
HTML
HTML

Вы перешли на другую страницу

Кликните внутри мини-браузера, чтобы поставить фокус в это окно.

100%
Бабушка Кекс

Притормози, дружище

Проходить вызовы части «Задачи среднего уровня» тренажёра «Сборник задач по программированию» можно после регистрации и оформления подписки.