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.