Construir un cifrador rot13 golfizado es demasiado fácil porque las letras son todas del mismo orden en el espacio de caracteres ASCII. Probemos un motor rot32 en su lugar.
Su tarea es construir una función que tome una cadena Base64 como entrada y devuelva la misma cadena pero con cada letra girada 32 símbolos de su original (en esencia, con el primer bit invertido).
La cadena de codificación base64 que se utilizará para este problema es 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/
con un carácter de relleno de =
. Esto es para evitar soluciones que de otro modo usarían o importarían una biblioteca Base64 incorporada donde las cadenas normalmente comienzan en A
lugar de 0
.
Example inputs and outputs:
> rot32("THE+QUICK+BROWN+FOX+JUMPS+OVER+THE+LAZY+DOG=")
nb8ukoc6eu5liqhu9irudogjmuip8lunb8uf4tsu7ia=
> rot32("NB8UKOC6EU5LIQHU9IRUDOGJMUIP8LUNB8UF4TSU7IA=")
h5Eoei6C8oBfckboFclo7iadgocjEfoh5Eo9AnmoDc4=
> rot32("Daisy++daisy++give+me+your+answer+true/I+/+m+half+crazy++all+for+the+love+of+you")
7GOY2uuJGOY2uuMO/KuSKu2U+XuGTY0KXuZX+KvcuvuSuNGRLuIXG32uuGRRuLUXuZNKuRU/KuULu2U+
El programa más corto para hacerlo en cualquier idioma gana.
Respuestas:
CJam, 24 bytes
Pruébalo en línea.
Cómo funciona
fuente
Bash / Unix shell, 29
Entrada de STDIN, salida en STDOUT.
fuente
Perl, 41
Solo una simple transliteración . Lecturas de STDIN, salidas a STDOUT:
Pruébalo aquí.
fuente
-p
y-e
para eliminar el$_=<>;
y el;print
.CJam,
45 41 38 29 2726 bytesLee la cadena a cifrar desde STDIN
Cómo funciona :
Pruébalo en línea aquí
fuente
Pitón, 178
Esta es una implementación de referencia de último lugar en Python que puedes usar para probar tu propia implementación.
fuente
GolfScript (
4140 bytes)Demostración en línea
Hay dos partes en esto: la traducción es una variante de la última técnica mencionada en mi consejo sobre
tr
GolfScript , y la otra parte es la construcción de cadenas, que utiliza la cadena0:a{A[
como una matriz de valores de caracteres y un pliegue para convertirlos en rangos de caracteres. Tenga en cuenta el uso de32/(*
para construir la cadena traducida insertando los primeros 32 caracteres entre los segundos 32 caracteres y el carácter que estamos traduciendo.fuente
pitón, 69
pruebas
fuente
LiveScript, 91
LiveScript, 50
Si la cadena está permitida como un segundo argumento.
fuente
JavaScript 164
fuente