Rutas
/
Julia
Julia
/
Ejercicios
/
Cifrado por rotación
Cifrado por rotación

Cifrado por rotación

Fácil

Instrucciones

Crea una implementación del cifrado por rotación, también llamado a veces cifrado César.

El cifrado César es un cifrado de desplazamiento simple que se basa en desplazar todas las letras del alfabeto usando una clave entera entre 0 y 26. Usar una clave de 0 o de 26 siempre dará el mismo resultado debido a la aritmética modular. La letra se desplaza tantos valores como indique el valor de la clave.

La notación general de los cifrados por rotación es ROT + <key>. El cifrado por rotación más usado es ROT13.

Un ROT13 sobre el alfabeto latino sería el siguiente:

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 los signos de puntuación.

Ejemplos

  • ROT5 omg da trl
  • ROT0 c da c
  • ROT26 Cool da Cool
  • ROT13 The quick brown fox jumps over the lazy dog. da Gur dhvpx oebja sbk whzcf bire gur ynml qbt.
  • ROT13 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 con la metaprogramación.

En esta entrada de blog puedes encontrar una breve introducción a los literales de string no estándar. En el manual hay una guía detallada de metaprogramación.

Puedes ampliar tu solución añadiendo la funcionalidad que se describe a continuación.

El extra A solo requiere los conceptos básicos descritos en la entrada de blog. El extra B requiere un conocimiento de la metaprogramación en Julia bastante mayor.

Extra A

Implementa un literal de string que aplique ROT13 al string:

R13"abcdefghijklmnopqrstuvwxyz" == "nopqrstuvwxyzabcdefghijklm"

Extra B

Implementa los literales de string R<i>, i = 0, ..., 26, que desplazan el string para los distintos valores de i:

R0"Hello, World!" == "Hello, World!"
R4"Testing 1 2 3 testing" == "Xiwxmrk 1 2 3 xiwxmrk"
R13"abcdefghijklmnopqrstuvwxyz" == "nopqrstuvwxyzabcdefghijklm"

Fuente

WikipediaEl enlace se abre en una nueva ventana o pestaña
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Julia Exercism

¿Listo para empezar Cifrado por rotación?

Regístrate en Exercism para aprender y dominar Julia con 35 conceptos128 ejercicios y mentoría humana real, todo gratis.