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á la tercera y más fácil (después de Computer Cipher y Trifid Cipher que publiqué anteriormente).
Con un Cifrado de reloj usamos la siguiente imagen para cifrar texto:
Entonces una oración como this is a clock cipher
sería:
t h i s i s a c l o c k c i p h e r (without additional spaces of course, but added as clarification)
19:7:8:18:00:8:18:00:AM:00:2:11:14:2:10:00:2:8:15:7:4:17
Desafío:
Dada una cadena sentence_to_encipher
, cifrarla como se describe anteriormente.
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).
- No se le permite añadir ceros a la izquierda para las letras de un solo dígito cifrados
b
a travésj
, pero dos ceros00
son obligatorios para los espacios. - Debe usarlo
:
como separador, y:
no se permite un inicio o final adicional . - Puede usar minúsculas
am
y enpm
lugar de mayúsculasAM
yPM
, siempre que sea coherente.
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 code-golf lo desanimen a publicar respuestas con lenguajes que no sean codegolf. 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 clock cipher"
Output: "19:7:8:18:00:8:18:00:AM:00:2:11:14:2:10:00:2:8:15:7:4:17"
Input: "test"
Output: "19:4:18:19"
Input: "what time is it"
Output: "22:7:AM:19:00:19:8:12:4:00:8:18:00:8:19"
Input: "acegikmoqsuwy bdfhjlnprtvxz"
Output: "AM:2:4:6:8:10:12:14:16:18:20:22:24:00:1:3:5:7:9:11:13:15:17:19:21:23:PM"
Input: "easy peazy"
Output: "4:AM:18:24:00:15:4:AM:PM:24"
[7, ":", 8, ":", "00", ":", 1, ":", 14, ":", 1]
dehi bob
, o uno debe unirse el resultado? Por cierto, cifrado ordenado!['7', ':', '8', ':', '0', '0', ':', '1', ':', '1', '4', ':', '1']
).Respuestas:
Python 2 ,
7472 bytesPruébalo en línea!
Toma la entrada como minúsculas
fuente
05AB1E ,
2221 bytesPruébalo en línea! o como un conjunto de pruebas
Algunas soluciones alternativas de 21 bytes:
fuente
ª
había cambiado :)Perl 6 , 47 bytes
Pruébalo en línea!
Anónimo Cualquier lambda que tome una cadena de ambos casos y devuelva la cadena encriptada.
Explicación:
fuente
Pyth, 25 bytes
Pruébelo en línea aquí , o verifique todos los casos de prueba a la vez aquí .
fuente
JavaScript (Node.js) , 72 bytes
Toma entrada en minúsculas.
Pruébalo en línea!
fuente
Java (JDK) , 95 bytes
Pruébalo en línea!
Créditos
fuente
char
avar
. :)C # (compilador interactivo de Visual C #) , 70 bytes
Toma la entrada como una cadena de letras minúsculas. Primero comprueba si el carácter es un espacio, y si lo es, lo convierte a
00
. A continuación, comprueba si el carácter es una A y lo convierte aAM
. Comprueba nuevamente si hay Z y lo convierte aPM
si es así. Por último, si el personaje pasa todos los controles, se convierte a su orden alfabético-1.-2 bytes gracias a @dana
Pruébalo en línea!
fuente
Ruby , 49 bytes
Pruébalo en línea!
Port of Jo King's Perl respuesta . Toma la entrada como una matriz de caracteres, devuelve una cadena con AM / PM en mayúsculas.
fuente
Rojas ,
124121110109 bytesPruébalo en línea!
fuente
05AB1E , 20 bytes
Muy inspirado por el 22-byter de @ Mr.Xcoder en el comentario de la respuesta 05AB1E existente de @Emigna .
Toma la entrada como una lista de caracteres en minúscula (sería 21 bytes con un encabezado
S
si tomo la entrada como una cadena).Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
Tcl , 100 bytes
Pruébalo en línea!
fuente
C # (compilador interactivo de Visual C #) , 98 bytes
Toma la entrada como una matriz de caracteres (minúsculas). Pruébalo en línea!
fuente
s=>string.Join(':',s.Select(c=>new[]{c-97+"","AM","PM","00"}["az ".IndexOf(c)+1]))
.Carbón , 26 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Toma la entrada en minúsculas (se puede cambiar trivialmente a mayúsculas). Explicación:
Establece el carácter de fondo en
:
. Esto llena los espacios entre los valores de salida creados por el movimiento correcto.Pase sobre cada personaje, dejando un espacio cada vez. (El primer movimiento no tiene efecto ya que el lienzo todavía está vacío en este punto).
Encienda el personaje y si es espacio,
a
oz
luego envíe el código apropiado. Lo uso en×0²
lugar de00
aquí, ya que este último costaría dos bytes en separadores adicionales.De lo contrario, muestre la posición indexada en 0 de la letra en el alfabeto en minúsculas como una cadena.
fuente
Jalea , 24 bytes
Pruébalo en línea!
fuente