Crie uma implementação da cifra rotacional, também chamada às vezes de cifra de César.
A cifra de César é uma cifra de deslocamento simples que se baseia em deslocar todas as letras do alfabeto usando uma chave inteira entre 0 e 26.
Usar uma chave 0 ou 26 sempre produz o mesmo resultado por causa da aritmética modular.
Cada letra é deslocada pela quantidade de posições indicada pelo 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
Ela é mais forte que a cifra Atbash porque tem 27 chaves possíveis e 25 chaves utilizáveis.
O texto cifrado é escrito com a mesma formatação da entrada, incluindo espaços e pontuação.
omg resulta em trl
c resulta em c
Cool resulta em Cool
The quick brown fox jumps over the lazy dog. resulta em Gur dhvpx oebja sbk whzcf bire gur ynml qbt.
Gur dhvpx oebja sbk whzcf bire gur ynml qbt. resulta em The quick brown fox jumps over the lazy dog.
Este é um bom exercício para experimentar com literais de string não padrão e metaprogramação.
Uma breve introdução aos literais de string não padrão pode ser encontrada neste post de blog. Um guia detalhado de metaprogramação pode ser encontrado no manual.
Você pode ampliar sua solução adicionando a funcionalidade descrita abaixo.
O bônus A exige apenas o básico, como descrito no post de blog. O bônus B exige bem mais conhecimento de metaprogramação em Julia.
Implemente um literal de string que aplica ROT13 à string:
R13"abcdefghijklmnopqrstuvwxyz" == "nopqrstuvwxyzabcdefghijklm"
Implemente os literais de string R<i>, i = 0, ..., 26, que deslocam a string em i valores:
R0"Hello, World!" == "Hello, World!"
R4"Testing 1 2 3 testing" == "Xiwxmrk 1 2 3 xiwxmrk"
R13"abcdefghijklmnopqrstuvwxyz" == "nopqrstuvwxyzabcdefghijklm"
Crie sua conta no Exercism para aprender e dominar Julia com 35 conceitos128 exercícios e mentoria humana de verdade, tudo de graça.