Cria uma implementação da cifra rotacional, também conhecida por cifra de César.
A cifra de César é uma cifra de deslocamento simples que se baseia em transpor todas as letras do alfabeto através de uma chave inteira entre 0 e 26.
Usar uma chave 0 ou 26 produz sempre o mesmo resultado, devido à aritmética modular.
A letra é deslocada tantas posições quantas o valor da chave.
A notação geral das cifras rotacionais é ROT + <key>.
A cifra rotacional mais usada é a ROT13.
Uma ROT13 no alfabeto latino seria assim:
Plain: abcdefghijklmnopqrstuvwxyz
Cipher: nopqrstuvwxyzabcdefghijklm
É mais forte do que a cifra Atbash porque tem 27 chaves possíveis, das quais 25 são utilizáveis.
O texto cifrado é escrito com a mesma formatação da entrada, incluindo espaços e pontuação.
omg dá trl
c dá c
Cool dá Cool
The quick brown fox jumps over the lazy dog. dá Gur dhvpx oebja sbk whzcf bire gur ynml qbt.
Gur dhvpx oebja sbk whzcf bire gur ynml qbt. dá The quick brown fox jumps over the lazy dog.
Este é um bom exercício para experimentar literais de string não padrão e metaprogramação.
Podes encontrar uma breve introdução aos literais de string não padrão neste artigo de blog. Encontras um guia detalhado de metaprogramação no manual.
Podes expandir a tua solução ao adicionares a funcionalidade descrita abaixo.
O Bónus A exige apenas os conhecimentos básicos descritos no artigo de blog. O Bónus B exige um conhecimento consideravelmente mais aprofundado de metaprogramação em Julia.
Implementa um literal de string que funciona como ROT13 sobre a string:
R13"abcdefghijklmnopqrstuvwxyz" == "nopqrstuvwxyzabcdefghijklm"
Implementa literais de string R<i>, i = 0, ..., 26, que deslocam a string para cada valor de i:
R0"Hello, World!" == "Hello, World!"
R4"Testing 1 2 3 testing" == "Xiwxmrk 1 2 3 xiwxmrk"
R13"abcdefghijklmnopqrstuvwxyz" == "nopqrstuvwxyzabcdefghijklm"
Inscreve-te no Exercism para aprenderes e dominares Julia com 35 conceitos128 exercícios, e mentoria humana real, tudo grátis.