В эпизоде Большого взрыва, который я смотрел сегодня (Сезон 11, Эпизод 20), доктор Уолкотт, теоретический космолог, занимающийся психическим трудом, написал свои записи задом наперед и заменил все буквы на числа, что сделало Шелдону очень трудным читать. Я подумал, что мне будет неплохо решить эту задачу, поскольку я новичок в программировании.
Мне удалось создать функцию, которая может шифровать слова в числа, чтобы Шелдон мог общаться с доктором Уолкоттом, но я не смог расшифровать числа в слова, чтобы доктор Уолкотт мог общаться с Шелдоном.
Основная проблема, с которой я столкнулся, - это преобразование чисел double-di git в буквы.
Например, encrypt ('z') вернет 25, индекс этой буквы, но decrypt ('25 ') вернет' f c 'not' 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');