Caeser Cipher JavaScript
Я думаю, что я близок к тому, чтобы понять это.
Цель состоит в том, чтобы взять строку "зашифрованных" символов и расшифровать их до реальных слов. Возможно, мой код не очень элегантный прямо сейчас, я доберусь до него, но я МОГУ получить начало 'str = "SERR PBQR PNZC" ", чтобы вернуть правильный код ASCII, используя charCodeAt(), добавляя или вычитая 13 по мере необходимости, и объединить это в strArray- я знаю, это не массив. Но я не могу заставить strArray стать массивом, поэтому я могу передать его в String.fromCharCode(null, strArray); чтобы он вернул правильный расшифрованный текст.
Мой код ниже:
function rot13(str) { // LBH QVQ VG!
var strArray = '';
//var right = [70, 82, 69, 69, 32, 67, 79, 68, 69, 32, 67, 65, 77, 80];
//used above variable with String.fromCharCode.apply(null, right); and it worked.
for(var i = 0; i < str.length; i++){
//console.log(str.charCodeAt(i));
if(str.charCodeAt(i) >= 65 && str.charCodeAt(i) <= 77) {
strArray = strArray.concat(str.charCodeAt(i) + 13, ' ');
} else if(str.charCodeAt(i) >= 78) {
strArray = strArray.concat(str.charCodeAt(i) - 13, ' ');
} else {
strArray = strArray.concat(str.charCodeAt(i), ' ');
}
}
return strArray;
}
// Change the inputs below to test
rot13("SERR PBQR PNZC");
Любая помощь будет оценена.
1 ответ
Итак, ниже возвращается правильная строка, за исключением места в конце; что не позволяет мне завершить вызов.
function rot13(str) { // LBH QVQ VG!
var strArray = '';
for(var i = 0; i < str.length; i++){
//console.log(str.charCodeAt(i));
if(str.charCodeAt(i) >= 65 && str.charCodeAt(i) <= 77) {
strArray = strArray.concat(str.charCodeAt(i) + 13, ' ');
} else if(str.charCodeAt(i) >= 78) {
strArray = strArray.concat(str.charCodeAt(i) - 13, ' ');
} else {
strArray = strArray.concat(str.charCodeAt(i), ' ');
}
}
var correct = strArray.split(' ');
console.log(correct);
return String.fromCharCode.apply(null, correct);
}
// Change the inputs below to test
rot13("SERR PBQR PNZC");