Introducción
Un día, estabas relajado en tu oficina en la CIA, cuando de repente ves una alerta en tu computadora. ¡Sus programas acaban de interceptar cientos de mensajes codificados! Un examen rápido revela la regla para la codificación, pero necesita un programa para decodificar rápidamente.
Desafío
Se le dará una lista de cadenas, separadas por comas. Cada cadena contendrá:
- Parte del mensaje codificado
- Es parte del mensaje codificado, si es que no en la forma
a=b
. Tenga en cuenta que es parte del mensaje si lo esab=c
. Agregue esta cadena al mensaje codificado.
- Es parte del mensaje codificado, si es que no en la forma
- Parte del esquema de codificación.
- Esto será en forma de
a=b
. Eso significa que todas las a en el mensaje deben ser reemplazadas por b. Tenga en cuenta que podría sera==
, lo que significa que todos los a`s deben reemplazarse con = 's.
- Esto será en forma de
Su programa debe enviar el mensaje, decodificado usando el esquema encontrado.
Otra información: su entrada solo contendrá comas para separar las cadenas. Podría contener otros caracteres, como! 1 #, etc. No contendrá letras mayúsculas. Los bits de información de decodificación no se decodifican entre sí. Solo el mensaje se ve afectado por la información de decodificación. Solo se dará un reemplazo para cada personaje, por ejemplo, no"io,"i=u","i=g"
Ejemplos
Entrada:"ta","y=s","y","a=e","b=t","b"," ","j","j=1"
Salida:test 1
Entrada:"z=p","zota","g=e","yugkb","y=t","u=o","k=s","li","fg","b=="
Salida:potatoes=life
Entrada:"p","=","==n","ot","p=a","hiz","i=e","z=r"
Salida:another
Este es el código de golf , por lo que la respuesta más corta en bytes gana.
fuente
"massega","e=a","a=e"
y similares?"io,"i=u","i=g"
Respuestas:
Jalea , 19 bytes
Pruébalo en línea!
¿Cómo?
fuente
m
es un átomo diádico que toma cada elemento derecho-izquierdo de izquierda *. Aquí, por ejemplo,['x','=','y','<space>','a','=','b']m2
cedería['x','y','a','b']
. (* a menos que la derecha sea cero cuando agrega una reflexión en su lugar.)Pitón 3, 98
Esta
lambda
función recibe una lista de cadenas (entrada) y devuelve una cadena (el mensaje decodificado).Ejemplos:
fuente
'=' == x[1:2]
será cierto parax = 'a=bc'
, que no es parte del esquema de codificaciónHaskell, 85 bytes
Uso
Descripción
f
crea una tabla de búsqueda.concat[c|c<-x,[]==f[c]]
Extrae el mensaje.map(\v->maybe v id$lookup v$f x)
realiza la búsqueda.fuente
JavaScript (ES6), 87 bytes
fuente
Retina,
84827774 bytesToma una lista separada por comas como entrada. Tenga en cuenta la nueva línea final
Pruébalo en línea!
Explicación:
Primero, movemos todas las expresiones del formulario
.=.
al final de la cadena y las separamos del mensaje con una coma doble (,,
). Esto es para que en el siguiente paso, podamos encontrar todas las codificaciones comprobando si cada carácter anterior,,
tiene una coincidencia=.
después. Esto se logra mediante elM!&`(.).*,,.*\1=.|.+,
cual encuentra todas esas coincidencias y las coloca en una lista de cadenas separadas por salto de línea. Luego modificamos cada cadena para que solo contenga un carácter no codificado o la versión codificada del carácter. Finalmente, reemplazamos todos los avances de línea y comas con la cadena vacía para que nuestra salida tenga un formato agradable.fuente
Lote, 188 bytes
Explicación: recorre la lista de cadenas dos veces (convenientemente
for
le gusta una cadena en formato CSV). La primera vez, busca cadenas que no contengan un=
como el segundo carácter y las concatena con el resultado. La segunda vez, busca cadenas que contienen un=
como el segundo carácter y realiza la sustitución. (Aún más convenientemente, la sustitución ya está en formato Batch).fuente
PHP, 116 bytes
Versión en línea
fuente
PHP,
8987 bytesdos versiones:
toma datos de los argumentos de la línea de comandos; correr con
-nr
.strtr
(traducción si el argumento contiene
=
, mensaje más).strtr
.fuente
05AB1E , 31 bytes
Pruébalo en línea!
fuente