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.
Este es un buen ejercicio para experimentar con literales de string no estándar y metaprogramación.
Puedes encontrar una breve introducción a los literales de string no estándar en esta entrada de blog. Una guía detallada de metaprogramación está en el manual.
Puedes ampliar tu solución agregando la funcionalidad que se describe a continuación.
El bonus A solo requiere lo básico que se explica en la entrada de blog. El bonus B requiere bastante más conocimiento de metaprogramación en Julia.
Implementa un literal de string que aplique ROT13 al string:
R13"abcdefghijklmnopqrstuvwxyz" == "nopqrstuvwxyzabcdefghijklm"
Implementa los literales de string R<i>, i = 0, ..., 26, que desplazan el string según los valores de i:
R0"Hello, World!" == "Hello, World!"
R4"Testing 1 2 3 testing" == "Xiwxmrk 1 2 3 xiwxmrk"
R13"abcdefghijklmnopqrstuvwxyz" == "nopqrstuvwxyzabcdefghijklm"
Regístrate en Exercism para aprender y dominar Julia con 35 conceptos128 ejercicios y mentoría humana real, todo gratis.