Треки
/
Julia
Julia
/
Вправи
/
Обертальний шифр
Обертальний шифр

Обертальний шифр

Легка

Вказівки

Створіть реалізацію шифру обертання, який іноді ще називають шифром Цезаря.

Шифр Цезаря - це простий шифр зсуву, який ґрунтується на перестановці всіх літер алфавіту за допомогою ключа у вигляді цілого числа від 0 до 26. Використання ключа 0 або 26 завжди дає той самий результат через модульну арифметику. Літера зсувається на стільки значень, скільки дорівнює значення ключа.

Загальне позначення для шифрів обертання - ROT + <key>. Найпоширеніший шифр обертання - ROT13.

ROT13 для латинського алфавіту має такий вигляд:

Plain:  abcdefghijklmnopqrstuvwxyz
Cipher: nopqrstuvwxyzabcdefghijklm

Він сильніший за шифр Атбаш, бо має 27 можливих ключів і 25 придатних до використання ключів.

Шифротекст записують у тому самому форматі, що й вхідні дані, разом із пробілами та розділовими знаками.

Приклади

  • ROT5 omg дає trl
  • ROT0 c дає c
  • ROT26 Cool дає Cool
  • ROT13 The quick brown fox jumps over the lazy dog. дає Gur dhvpx oebja sbk whzcf bire gur ynml qbt.
  • ROT13 Gur dhvpx oebja sbk whzcf bire gur ynml qbt. дає The quick brown fox jumps over the lazy dog.

Ця вправа добре підходить, щоб поекспериментувати з нестандартними рядковими літералами та метапрограмуванням.

Короткий вступ до нестандартних рядкових літералів можна знайти в цьому дописі блогу. Докладний посібник із метапрограмування можна знайти в офіційній документації.

Можна розширити власне рішення, додавши функціональність, описану нижче.

Бонус A потребує лише базових знань, окреслених у дописі блогу. Бонус B потребує значно глибших знань метапрограмування в Julia.

Бонус A

Реалізуйте рядковий літерал, що застосовує ROT13 до рядка:

R13"abcdefghijklmnopqrstuvwxyz" == "nopqrstuvwxyzabcdefghijklm"

Бонус B

Реалізуйте рядкові літерали R<i>, i = 0, ..., 26, які зсувають рядок на i позицій:

R0"Hello, World!" == "Hello, World!"
R4"Testing 1 2 3 testing" == "Xiwxmrk 1 2 3 xiwxmrk"
R13"abcdefghijklmnopqrstuvwxyz" == "nopqrstuvwxyzabcdefghijklm"

Джерело

WikipediaПосилання відкривається в новому вікні або вкладці
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Julia Exercism

Час розпочати Обертальний шифр?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Julia, а також 35 концепцій128 вправ та справжнє наставництво від людей, і все це безкоштовно.