大爆炸理论挑战

问题描述 投票:1回答:1

[今天我正在观看的大爆炸情节(第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');
javascript encryption translation
1个回答
0
投票

作为上面我的评论的跟进,以下代码应该有效。

© www.soinside.com 2019 - 2024. All rights reserved.