Прошу объяснить решение испытания: Великий дешифровщик.


#1

Прошел курс 2 раза, все равно не доходит, как его сделать и самое главное, понять, чтоб я мог не читая форума все написать. Может ли кто объяснить ход решения построения дешифровщика очень подробно? Спасибо.


#2

Ну я попробую.
1. создаём цикл в котором объявляем переменную index равную 0, которая будет отвечать за нулевой индекс массива. Затем прописываем условие выхода из цикла - покуда наш index ну будет меньше либо равен последнему индексу массива(для этого мы от длинны массива отнимаем еденицу, т.к длина массива начинаеся с еденицы, а индекс первого элемента равен нулю.), и на каждой итерации наращиваем на 1 наш index. Тем самым цикл пройдётся по каждому индексу массива.

     for (var index =  0; index <= encodedMessage.length - 1; index++) {
          ...
    }

2 Далее создаём переменную которая на каждой итерации будет “расшифровывать” нам каждый индекс массива, для этого вызываем текущий индекс(его значение в массиве) итерации цикла и плюсуем к нему значение смещения.

var numbersSymbol = encodedMessage[index] + shift;

3 Далее создаём условие проверяющее что если значение нашей переменной numbersSymbol превысит длину нашего массива symbols, то мы отнимем от переменной длину массива и получим начальный индекс массива symbols.

if ( numbersSymbol > symbols.length) {
    numbersSymbol -= symbols.length;
  }

4 Затем мы производим обычную конкатенацию в переменную decodedMessage путем приклеивания полученных символов (т.е. на каждой итерации цикла мы получали значение индекса из массива encodedMessage прибавляли к нему shift и под полученная цифра является индексом массива symbols, из которого мы доставали нужное строчное значение)

decodedMessage += symbols[numbersSymbol];

Я не учитель, но надеюсь доходчиво объяснил!


#3

Да, объяснили очень доходчиво, спасибо.


#4

Был рад помочь=)