0

In the initial string, passed as an argument to the rot 13 function, the values of the letters are shifted by 13 places. Thus 'A' ↔ 'N', 'B' ↔ 'O' and so on.

I am trying to decode it by iterating through the string and using if else conditional statements. However, it seems that the OR(||) operator is not working properly.

" " has the value 32, so it should stay unchanged, but the result for this charater returns 19,(so 13 was still subtracted from 32).

Where is my mistake?

function rot13(str) {
  var x = "";
  var y = String.fromCharCode(x);
  for (i = 0; i < str.length; i++) {
    if (str.charCodeAt(i) > 65 || str.charCodeAt(i) < 78) {
      x += str.charCodeAt(i) - 13 + ",";
    } else if (str.charCodeAt(i) > 78 || str.charCodeAt(i) < 91) {
      x += str.charCodeAt(i) + 13 + ",";

    } else {
      x += str.charCodeAt(i) + ",";
    }


  }

  return x;
  //returns '70,56,69,69,19,67,53,68,69,19,67,65,77,54,'
}


console.log(rot13("SERR PBQR PNZC"));
Igor Schekotihin
  • 177
  • 1
  • 12

0 Answers0