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

Пятая программа: «Начинающий дешифровщик»

Уже пятый час кот висел на шторах со стороны окна. Лапы начинали затекать, но сдаваться он не собирался. Сегодня, в пятницу, он специально пришёл в отдел маркетологов засветло, пока никого не было, и устроил засаду.

Вот что-то начало происходить: люди встали, придвинули стулья к телевизору, включили приставку. Начинался турнир. Кекс сразу всё понял, с облегчением втянул когти, надул хвост и плюхнулся на подоконник…

А на следующей неделе провалы в трафике исчезли. Спасибо анализу данных!

Ваша отличная программа помогла Кексу обнаружить пятничные киберспортивные турниры в отделе маркетологов. Когда с ними было покончено, рост видеоблога пошёл как по маслу, а Кекс зауважал вас, как сильного программиста. И позвал вас поучаствовать в его новом проекте мечты.

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

Мяу! Я научился шифровать, и мне нужна программа расшифровки.

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

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

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

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

Решение

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

// Алфавит
let symbols = ['А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я', ' ', '.', ',', '—', '!'];

// Закодированное сообщение
let encodedSymbols = [18, 38, 46, 62, 66, 50, 33, 41, 66, 49, 48, 38, 58, 62, 68, 66, 48, 37, 42, 47, 66, 50, 33, 41, 66, 49, 48, 51, 49, 42, 67];

// Раскодированное сообщение
let decodedMessage = '';

encodedSymbols.forEach(symbol => {
  decodedMessage += symbols[symbol];
});
Минимальный вид табов
  • index.html
HTML
HTML

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

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

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

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

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