Caesars Cipher не работает

217
07 мая 2018, 23:29

Не могу найти ошибку. Со знаками, не являющимися буквами, еще не разбирался.

function rot13(str) {
  for (i=0; i<str.length; i++) {
    var symbCode = str.charCodeAt(i);
    if (symbCode >= 77) {
    symbCode -= 13;}
    else {
      symbCode += 13;}

    var symbFromCode = String.fromCharCode(symbCode); 
    str = str.replace(str[i], symbFromCode);
  }
  return str;
}
// Change the inputs below to test
rot13("SERR PBQR PNZC");
Answer 1
    str = str.replace(str[i], symbFromCode);

Вы же заменяете не символ по конкретному индексу, а первое вхождение. После замены у вас каша произойдет:

SERR -> FERR

FERR -> FRRR

FRRR -> FERR //так как заменится первая R, а не вторая, как вы предполагаете

FERR -> FEER //и т.д.

Лучше формируйте новую строку в отдельной переменной и её возвращайте:

function rot13(str) {
  result = '';
  for (i=0; i<str.length; i++) {
    var symbCode = str.charCodeAt(i);
    if (symbCode >= 77) {
    symbCode -= 13;}
    else {
      symbCode += 13;}

    var symbFromCode = String.fromCharCode(symbCode); 
    result = result + symbFromCode;
  }
  return result;
}
READ ALSO
Раскрытие при клике

Раскрытие при клике

В общем, сейчас работает так, но если на странице будет несколько (content) как быть? Получается сейчас так, что отображает один (

146
Какие вопросы задают Junior Font-end? [требует правки]

Какие вопросы задают Junior Font-end? [требует правки]

подскажите какие могут задавать вопросы Junior Front-end(у) на собеседовании ?

155
Отображение курсора в поле телефона

Отображение курсора в поле телефона

Использую обычный плагин jquerymaskedinput

155
Свойство Ptototype

Свойство Ptototype

Есть вот такой код

160