Inne podejście: polski alfabet

Praktyka: teksty i szyfry - JavaScript od podstaw: konsola (JavaScript)

Kody znaków nie znają polskich liter: Ą ma kod 260, daleko od A. Drugi sposób na szyfr nie liczy kodów, tylko szuka litery w napisie `ALPHABET` (`indexOf`) i bierze literę o `k` pozycji dalej. Taki alfabet może mieć dowolne litery, także Ą, Ć, Ł, a jego długość (`ALPHABET.length`, tu 32) zastępuje liczbę 26. Małe litery szyfrujemy jako wielkie i wracamy do małych.

const ALPHABET = 'AĄBCĆDEĘFGHIJKLŁMNŃOÓPRSŚTUWYZŹŻ';

function shiftPolish(ch, k) {
  const upper = ch.toUpperCase();
  const i = ALPHABET.indexOf(upper);
  if (i === -1) return ch;
  const out = ALPHABET[((i + k) % ALPHABET.length + ALPHABET.length) % ALPHABET.length];
  return ch === upper ? out : out.toLowerCase();
}

function caesarPolish(text, k) {
  return text.split('').map(ch => shiftPolish(ch, k)).join('');
}

const secret = caesarPolish('Zażółć gęślą jaźń', 1);
console.log('Liter w alfabecie:', ALPHABET.length);
console.log(secret);
console.log(caesarPolish(secret, -1));

Ł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.