Problem: Caesars Cypher ROT13.
Problem Definition: Caesars Cypher ROT13 decodes word by shifting it thirteen places backward.
Algorithm
The given string is splitted into an array/list of characters.
I looped through each character and get its ASCII code.
I then checked if each character ASCII code is between A-Z and return the character as it is if it's not between A-Z .
I shifted character code of character whose ASCII code fall between A-Z by 13 and return the corresponding character at that position.
For character with ASCII code lesser than 78, I shifted them forward by 13 places so as to fall between A-Z .
JavaScript Code
function ROT13(str) {
return str.split(" ").map.call(str, function(char){
x = char.charCodeAt(0);
if (x < 65 || x > 90) {
return String.fromCharCode(x);
}
else if (x < 78) {
return String.fromCharCode(x + 13);
}
return String.fromCharCode(x - 13);
}).join(" ");
}