[今天我正在观看的大爆炸情节(第11季,第20集)中,螺母工作理论宇宙学家沃尔科特博士向后写了笔记,并将所有字母都改为数字,这使谢尔顿很难阅读。我认为这对我来说是一个很好的挑战,因为我是编程新手。
我能够创建一个可以将单词加密成数字的功能,以便Sheldon可以与Wolcott博士进行通信,但是我无法解密数字到单词以使Wolcott博士与Sheldon进行通信。
我遇到的主要问题是将两位数的数字转换为字母。
例如,encrypt('z')将返回25,即该字母的索引,但是crypto('25')将返回'fc'而不是'z'
我在重构和选择良好的变量名时遇到困难,因此请提前对不起。也感谢您的帮助,我非常感谢。
const alphabet = 'abcdefghijklmnopqrstuvwxyz';
const alphabetArray = alphabet.split('');
const encrypt = (sentence) => {
const sentenceArray = sentence.toLowerCase().split('').reverse();
const encryption = [];
for (let i = 0; i < sentenceArray.length; i += 1) {
if (sentenceArray[i] === ' ') {
encryption.push(' ');
}
for (let j = 0; j < alphabetArray.length; j += 1) {
if (sentenceArray[i] === alphabetArray[j]) {
const letterIndex = alphabetArray.indexOf(alphabetArray[j]);
encryption.push(letterIndex);
}
}
}
return encryption.join('');
};
encrypt('Abc Def');
const decrypt = (numbers) => {
const numbersArray = numbers.split('').reverse();
const decryption = [];
for (let i = 0; i < numbersArray.length; i += 1) {
if (numbersArray[i] === ' ') {
decryption.push(' ');
}
for (let j = 0; j < alphabetArray.length; j += 1) {
if (parseInt(numbersArray[i]) === alphabetArray.indexOf(alphabetArray[j])) {
decryption.push(alphabetArray[j]);
}
}
}
return decryption.join('');
};
decrypt('543 210');
作为上面我的评论的跟进,以下代码应该有效。