Refaktoryzacja: funkcje shiftChar i caesar
Praktyka: teksty i szyfry - JavaScript od podstaw: konsola (JavaScript)
Druga wersja dzieli pracę na dwie funkcje: `shiftChar` przesuwa JEDEN znak (teraz także małe litery), a `caesar` przechodzi cały tekst. Wzór `((n + k) % 26 + 26) % 26` działa także dla ujemnego przesunięcia, więc odszyfrowanie to po prostu `caesar(secret, -k)`, bez osobnej funkcji. Wynik dla wielkich liter jest taki sam jak w pierwszej wersji.
function shiftChar(ch, k) {
const code = ch.charCodeAt(0);
if (code >= 65 && code <= 90) {
return String.fromCharCode(((code - 65 + k) % 26 + 26) % 26 + 65);
}
if (code >= 97 && code <= 122) {
return String.fromCharCode(((code - 97 + k) % 26 + 26) % 26 + 97);
}
return ch;
}
function caesar(text, k) {
let result = '';
for (const ch of text) {
result += shiftChar(ch, k);
}
return result;
}
const secret = caesar('VENI VIDI VICI XYZ', 3);
console.log(secret);
console.log(caesar('Ala ma kota, a kot ma Ale.', 3));
console.log('Odszyfrowane:', caesar(secret, -3));Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.
Wszystkie lekcje kursu JavaScript od podstaw: konsola·Zaloguj się, aby zapisać postęp na koncie.