Introducción:
Tengo un montón de cifrados diferentes almacenados en un documento que una vez compilé cuando era niño, elegí algunos de los que pensé que eran más adecuados para los desafíos (no demasiado triviales y no demasiado difíciles) y los transformé en desafíos. La mayoría de ellos todavía están en la caja de arena, y todavía no estoy seguro de si los publicaré todos, o solo unos pocos. Aquí está el segundo ( Computer Cipher fue el primero que publiqué).
Para el Trifid Cipher (sin usar una palabra clave), el alfabeto (y un comodín adicional) se divide en tres tablas de 3 por 3:
table 1: table 2: table 3:
|1 2 3 |1 2 3 |1 2 3
-+----- -+----- -+-----
1|a b c 1|j k l 1|s t u
2|d e f 2|m n o 2|v w x
3|g h i 3|p q r 3|y z
Un texto que queremos cifrar es el primer carácter por carácter codificado en números de tabla-fila-columna. Por ejemplo, el texto se this is a trifid cipher
convierte en:
t h i s i s a t r i f i d c i p h e r
table: 3 1 1 3 3 1 3 3 1 3 3 2 1 1 1 1 3 1 1 2 1 1 2
row: 1 3 3 1 3 3 1 3 1 3 1 3 3 2 3 2 3 1 3 3 3 2 3
column: 2 2 3 1 3 3 1 3 1 3 2 3 3 3 3 1 3 3 3 1 2 2 3
Luego colocamos todo uno tras otro fila por fila en la tabla de arriba en grupos de tres:
311 331 331 332 111 131 121 121 331 331 313 133 232 313 332 322 313 313 132 333 313 331 223
Y esos se transforman de nuevo en personajes usando las mismas tablas:
s y y z a g d d y y u i q u z w u u h u y o
Una cosa a tener en cuenta, la longitud de entrada debe ser coprime a 3. Entonces, si la longitud es un múltiplo de 3, agregamos uno o dos espacios finales para que la longitud de entrada ya no sea un múltiplo 3.
Desafío:
Dada una cadena sentence_to_encipher
, cifrarla como se describe anteriormente.
Solo tiene que cifrar dado el sentence_to_encipher
, por lo que no es necesario crear un programa / función de descifrado también. Sin embargo, podría hacer un desafío de la parte 2 para descifrar en el futuro (aunque tengo la sensación de que es trivial / similar al proceso de cifrado).
Reglas de desafío:
- Puede suponer
sentence_to_encipher
que solo contendrá letras y espacios. - Puede usar minúsculas o mayúsculas (indique cuál ha utilizado en su respuesta).
- Puede elegir agregar uno o dos espacios finales cuando la longitud de entrada es 3 para que ya no sea un múltiplo de 3.
- I / O es flexible. Tanto la entrada como la salida pueden ser una cadena, una lista / matriz / secuencia de caracteres, etc.
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de código de golf lo desalienten de publicar respuestas con idiomas que no sean de código. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Las reglas estándar se aplican a su respuesta con las reglas de E / S predeterminadas , por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código (es decir, TIO ).
- Además, se recomienda agregar una explicación para su respuesta.
Casos de prueba:
Input: "this is a trifid cipher"
Output: "syyzagddyyuiquzwuuh uyo"
Input: "test"
Output: "utbk"
Input: "output"
Possible outputs: "rrvgivx" (one space) or "rrzcc lr" (two spaces)
Input: "trifidcipher"
Possible output: "vabbuxlzz utr" (one space) or "vabbyzv rx ie " (two spaces)