Мое решение
var key;
var symbolsLength = symbols.length;
for(var i = 0; i < encodedMessage.length; i++) {
key = encodedMessage[i] + shift;
if(key > symbolsLength) {
key -= symbolsLength;
}
decodedMessage += symbols[key];
}
var key;
var symbolsLength = symbols.length;
for(var i = 0; i < encodedMessage.length; i++) {
key = encodedMessage[i] + shift;
if(key > symbolsLength) {
key -= symbolsLength;
}
decodedMessage += symbols[key];
}
Пожалуйста, прячьте свой код таким образом:
var decodedMessage = '';
for (var j = 0; j < encodedMessage.length; j++) {
var index = encodedMessage[j] + shift;
decodedMessage += symbols[index > symbols.length ? index - symbols.length : index];
}
Ок. Спасибо.
var decodedMessage = ‘’;
var d =0;
for(var i =0;i<=symbols.length;i++){
d++;
}
for(var i =0;i<=encodedMessage.length;i++){
if (encodedMessage[i]<=d) {
decodedMessage+=symbols[encodedMessage[i]+shift];
} else {
decodedMessage+=symbols[encodedMessage[i]+shift-d];
}
}
не проходит проверку. Подскажите, что не так?
i < encodedMessage.length; или i <= encodedMessage.length - 1;
Расскажите об этом фрагменте, я не могу понять, в чем его суть:
Спасибо! Нашел ошибку!
for (var i = 0; i <= encodedMessage.length - 1; i++) {
if (encodedMessage[i] + shift <= symbols.length) {
var j = encodedMessage[i] + shift;
} else {
j = encodedMessage[i] + shift - symbols.length;
}
decodedMessage += symbols[j];
}
Инесс, если вопрос уже не актуален для Вас, все равно оставлю здесь.
В уроке 9 “Ударим циклами по массивам!” описывается почему используется i < encodedMessage.length; или i <= encodedMessage.length - 1;
На пример результатом encodedMessage.length будет 10, так как нумерация идет от нуля при значении индекса равном десяти:
В первом случае будет обращение к несуществующему элементу массива, так как десятого элемента нет, а максимальный девятый.И чтобы не получить ошибочных данных ставим знак меньше;
Во втором случае мы и пишем что индекс будет меньше или равен 10-1. Ведь индекс девять есть!
Спасибо) Ваше объяснение наверняка будет полезно многим.
Мой же вопрос касался нижнего фрагмента с циклом)
Упс:):) Простите, не туда посмотрел! Сказывается некоторая усталость.
Спасибо, что ответили:) Просто я не делал лишних переменных и массивов, как-бы смысла не было:)
for (var i = 0; i <= encodedMessage.length - 1; i++) {
if (encodedMessage[i] + shift > symbols.length) {
decodedMessage += symbols[encodedMessage[i] - symbols.length + shift];
} else {
decodedMessage += symbols[encodedMessage[i] + shift];
}
}
вот так прошло
var decodedMessage = ‘’;
for (var i=0; i<encodedMessage.length; i++) {
var index=encodedMessage[i]+shift;
if (index>symbols.length) {
decodedMessage=decodedMessage+symbols[index-symbols.length];
}
else {
decodedMessage=decodedMessage+symbols[index];
}
}
Цитата
[index > symbols.length ? index - symbols.length : index]; - скажите, пожалуйста,что это значит ? что за правило написания?
// Алфавит
var symbols = ['А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я', ' ', '.', ',', '—', '!'];
// Смещение
var shift = 10;
// Закодированное сообщение
var encodedMessage = [8, 28, 36, 52, 56, 40, 23, 31, 56, 39, 38, 28, 48, 52, 58, 56, 38, 27, 32, 37, 56, 40, 23, 31, 56, 39, 38, 41, 39, 32, 57];
// Раскодированное сообщение
var decodedMessage = '';
for (i=0; i<=encodedMessage.length-1; i++){
decodedMessage+=symbols[encodedMessage[i]+shift];
}
Что не так? проходит 5 проверок из 6
UPD: Ответ прост - невнимательность при чтении задания
// Раскодированное сообщение
var decodedMessage = '';
for (i=0; i<=encodedMessage.length-1; i++){
var index = encodedMessage[i]+shift;
if (index > symbols.length){
decodedMessage += symbols[index-symbols.length];
}
else {
decodedMessage += symbols[index];
}
}
var decodedMessage = ‘’;
var Message;
for(var i=0; i <= encodedMessage.length-1; i++) {
Message=encodedMessage[i]+shift;
if(Message<=symbols.length) {
decodedMessage+=symbols[0+Message];
}
else {
decodedMessage+=symbols[0+Message-symbols.length];
}
}
console.log(decodedMessage);
Не без помощи чёрной магии получилось решить:triumph:
decodedMessage += symbols[encodedMessage[i] + shift];
}
for (var i = 0; i < encodedMessage.length; i++) {
if (encodedMessage[i] + shift > symbols.length) {
encodedMessage[i] = encodedMessage[i] - symbols.length;
}
decodedMessage+= symbols[encodedMessage[i] + shift];
}
А у меня так вышло:
for (i = 0; i < encodedMessage.length; i++) {
if (symbols[encodedMessage[i] + shift]) {
decodedMessage += symbols[encodedMessage[i] + shift];
} else {
decodedMessage += symbols[encodedMessage[i] - symbols.length + shift];
}
}
Доброго времени суток! Мой вариант:
// Алфавит
var symbols = [‘А’, ‘Б’, ‘В’, ‘Г’, ‘Д’, ‘Е’, ‘Ё’, ‘Ж’, ‘З’, ‘И’, ‘Й’, ‘К’, ‘Л’, ‘М’, ‘Н’, ‘О’, ‘П’, ‘Р’, ‘С’, ‘Т’, ‘У’, ‘Ф’, ‘Х’, ‘Ц’, ‘Ч’, ‘Ш’, ‘Щ’, ‘Ъ’, ‘Ы’, ‘Ь’, ‘Э’, ‘Ю’, ‘Я’, ‘а’, ‘б’, ‘в’, ‘г’, ‘д’, ‘е’, ‘ё’, ‘ж’, ‘з’, ‘и’, ‘й’, ‘к’, ‘л’, ‘м’, ‘н’, ‘о’, ‘п’, ‘р’, ‘с’, ‘т’, ‘у’, ‘ф’, ‘х’, ‘ц’, ‘ч’, ‘ш’, ‘щ’, ‘ъ’, ‘ы’, ‘ь’, ‘э’, ‘ю’, ‘я’, ’ ', ‘.’, ‘,’, ‘—’, ‘!’];
// Смещение
var shift = 10;
// Закодированное сообщение
var encodedMessage = [8, 28, 36, 52, 56, 40, 23, 31, 56, 39, 38, 28, 48, 52, 58, 56, 38, 27, 32, 37, 56, 40, 23, 31, 56, 39, 38, 41, 39, 32, 57];
// Раскодированное сообщение
var decodedMessage = ‘’;
var letter = 0;
for (var i = 0; i <= encodedMessage.length - 1; i++) {
if (encodedMessage[i] + shift > symbols.length) {
letter = symbols[(encodedMessage[i] + shift) - symbols.length];
} else {
letter = symbols[encodedMessage[i] + shift];
}
decodedMessage += letter;
}
console.log(decodedMessage);
Привет! Tтобы узнать, что я могу сделать, наберите: @discobot отображение справки
.