Crea una implementación del cifrado rotacional, también llamado a veces cifrado César.
El cifrado César es un cifrado de desplazamiento simple que se basa en transponer todas las letras del alfabeto usando una clave entera entre 0 y 26.
Usar una clave de 0 o 26 siempre dará el mismo resultado debido a la aritmética modular.
La letra se desplaza tantos valores como el valor de la clave.
La notación general de los cifrados rotacionales es ROT + <key>.
El cifrado rotacional más usado es ROT13.
Un ROT13 sobre el alfabeto latino se vería así:
Plain: abcdefghijklmnopqrstuvwxyz
Cipher: nopqrstuvwxyzabcdefghijklm
Es más fuerte que el cifrado Atbash porque tiene 27 claves posibles, y 25 claves utilizables.
El texto cifrado se escribe con el mismo formato que la entrada, incluidos los espacios y la puntuación.
omg da trl
c da c
Cool da Cool
The quick brown fox jumps over the lazy dog. da Gur dhvpx oebja sbk whzcf bire gur ynml qbt.
Gur dhvpx oebja sbk whzcf bire gur ynml qbt. da The quick brown fox jumps over the lazy dog.
Necesitas implementar la función rotate, que recibe un Int y un String, y luego lo codifica con un cifrado rotacional.
Puedes usar la firma que te damos si tienes dudas sobre los tipos, pero no dejes que limite tu creatividad.
Este ejercicio trabaja con datos de texto. Por razones históricas, el tipo
String de Haskell es sinónimo de [Char], una lista de caracteres. Para
manejar datos de texto de forma más eficiente, se puede usar el tipo Text.
Como extensión opcional de este ejercicio, puedes
- text a tu lista de dependencias en package.yaml.Data.Text de la siguiente
manera:import qualified Data.Text as T
import Data.Text (Text)
Text, por ejemplo rotate :: Int -> Text -> Text, y referirte a
los combinadores de Data.Text como, por ejemplo, T.pack.Data.Text.String por Text en RotationalCipher.hs, es decir:rotate :: Int -> Text -> Text
Esta parte es totalmente opcional.
Regístrate en Exercism para aprender y dominar Haskell con 107 ejercicios y mentoría humana real, todo gratis.