Створіть реалізацію шифру обертання, який іноді ще називають шифром Цезаря.
Шифр Цезаря - це простий шифр зсуву, який ґрунтується на перестановці всіх літер алфавіту за допомогою ключа у вигляді цілого числа від 0 до 26.
Використання ключа 0 або 26 завжди дає той самий результат через модульну арифметику.
Літера зсувається на стільки значень, скільки дорівнює значення ключа.
Загальне позначення для шифрів обертання - ROT + <key>.
Найпоширеніший шифр обертання - ROT13.
ROT13 для латинського алфавіту має такий вигляд:
Plain: abcdefghijklmnopqrstuvwxyz
Cipher: nopqrstuvwxyzabcdefghijklm
Він сильніший за шифр Атбаш, бо має 27 можливих ключів і 25 придатних до використання ключів.
Шифротекст записують у тому самому форматі, що й вхідні дані, разом із пробілами та розділовими знаками.
omg дає trl
c дає c
Cool дає Cool
The quick brown fox jumps over the lazy dog. дає Gur dhvpx oebja sbk whzcf bire gur ynml qbt.
Gur dhvpx oebja sbk whzcf bire gur ynml qbt. дає The quick brown fox jumps over the lazy dog.
Ця вправа добре підходить, щоб поекспериментувати з нестандартними рядковими літералами та метапрограмуванням.
Короткий вступ до нестандартних рядкових літералів можна знайти в цьому дописі блогу. Докладний посібник із метапрограмування можна знайти в офіційній документації.
Можна розширити власне рішення, додавши функціональність, описану нижче.
Бонус A потребує лише базових знань, окреслених у дописі блогу. Бонус B потребує значно глибших знань метапрограмування в Julia.
Реалізуйте рядковий літерал, що застосовує ROT13 до рядка:
R13"abcdefghijklmnopqrstuvwxyz" == "nopqrstuvwxyzabcdefghijklm"
Реалізуйте рядкові літерали 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"
Зареєструйтеся на Exercism, щоб вивчати й опановувати Julia, а також 35 концепцій128 вправ та справжнє наставництво від людей, і все це безкоштовно.