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.
Precisas de implementar a função rotate, que recebe um Int e uma String e depois os codifica com uma cifra rotativa.
Podes usar a assinatura fornecida se tiveres dúvidas quanto aos tipos, mas não deixes que isso limite a tua criatividade.
Este exercício trabalha com dados textuais. Por razões históricas, o tipo
String do Haskell é sinónimo de [Char], uma lista de carateres. Para um
tratamento mais eficiente de dados textuais, podes usar o tipo Text.
Como extensão opcional deste exercício, podes
- text à tua lista de dependências em package.yaml.Data.Text da seguinte
forma:import qualified Data.Text as T
import Data.Text (Text)
Text, por exemplo rotate :: Int -> Text -> Text, e referir-te
aos combinadores de Data.Text como, por exemplo, T.pack.Data.Text.String por Text em RotationalCipher.hs, ou seja:rotate :: Int -> Text -> Text
Esta parte é totalmente opcional.
Inscreve-te no Exercism para aprenderes e dominares Haskell com 107 exercícios, e mentoria humana real, tudo grátis.