Caesars Cipher - can't pass non-alphabetic character [SOLVED]

Caesars Cipher - can't pass non-alphabetic character [SOLVED]
0

#1

Hi,
I almost done last challenge ‘Caesars Cipher’ in basic algorithms, but I am stuck on passing non-alphabetic character. My algorithm can decipher, but there is no spaces between words. Any suggestion, tips, what I’m doing wrong?
Here is my code:

function rot13(str) { // LBH QVQ VG!
 
  var decodeStr = "";
     
  for(var i = 0; i < str.length; i++){
    var singleChar = str.charCodeAt([i]); 
    
      if(singleChar >= 65 && singleChar <= 77){
         decodeStr+= String.fromCharCode(singleChar + 13);
      }
      if (singleChar >= 78 && singleChar <= 90){
       decodeStr+= String.fromCharCode(singleChar - 13);
      } 
  }
    
  return decodeStr;
}

// Change the inputs below to test
rot13("SERR YBIR?");

#2

Your code adds a letter to your decodeStr variable if and only if its character code is within those values specified. What should it do otherwise? Where would you put that in your code?


#3

thx! I get it :wink:

function rot13(str) { // LBH QVQ VG!
 
  var decodeStr = "";
     
  for(var i = 0; i < str.length; i++){
    var singleChar = str.charCodeAt([i]); 
    
     if(singleChar >= 65 && singleChar <= 77){
       decodeStr+= String.fromCharCode(singleChar + 13);
     }
     if (singleChar >= 78 && singleChar <= 90){
       decodeStr+= String.fromCharCode(singleChar - 13);
     } 
     if (singleChar === 32){
        decodeStr+= " ";
     }
     if (singleChar === 33){
        decodeStr+= "!";
     }
     if (singleChar === 46){
        decodeStr+= ".";
     }
     if (singleChar === 63){
        decodeStr+= "?";
     }
  }
    
  return decodeStr;
}

// Change the inputs below to test
rot13("SERR CVMMN!");

I need to refactoring it, but I’ll do it tomorrow. Thx again