introduction
Un jour, vous vous relaxiez dans votre bureau de la CIA, quand soudain vous voyez une alerte sur votre ordinateur. Vos programmes viennent d'intercepter des centaines de messages codés! Un examen rapide révèle la règle d'encodage, mais vous avez besoin d'un programme pour décoder rapidement.
Défi
Vous recevrez une liste de chaînes, séparées par des virgules. Chaque chaîne contiendra soit:
- Une partie du message codé
- Il fait partie du message codé s'il n'est pas dans le formulaire
a=b
. Notez qu'il fait partie du message s'il l'estab=c
. Ajoutez cette chaîne au message codé.
- Il fait partie du message codé s'il n'est pas dans le formulaire
- Une partie du schéma de codage
- Ce sera sous la forme de
a=b
. Cela signifie que tous les a du message doivent être remplacés par des b. Notez que cela pourrait l'êtrea==
, ce qui signifie que tous les a`s doivent être remplacés par des = 's.
- Ce sera sous la forme de
Votre programme doit ensuite sortir le message, décodé en utilisant le schéma trouvé.
Autres informations: votre entrée ne contiendra que des virgules pour séparer les chaînes. Il peut contenir d'autres caractères, comme! 1 #, etc. Il ne contiendra pas de lettres majuscules. Les informations de décodage ne se décodent pas les unes les autres. Seul le message est affecté par les informations de décodage. Un seul remplacement sera donné pour chaque personnage, par exemple non"io,"i=u","i=g"
Exemples
Contribution:"ta","y=s","y","a=e","b=t","b"," ","j","j=1"
Production:test 1
Contribution:"z=p","zota","g=e","yugkb","y=t","u=o","k=s","li","fg","b=="
Production:potatoes=life
Contribution:"p","=","==n","ot","p=a","hiz","i=e","z=r"
Production:another
C'est le golf de code , donc la réponse la plus courte en octets gagne!
la source
"massega","e=a","a=e"
et similaires?"io,"i=u","i=g"
Réponses:
Gelée , 19 octets
Essayez-le en ligne!
Comment?
la source
m
est un atome dyadique qui prend chaque élément droit de gauche *. Ici, par exemple,['x','=','y','<space>','a','=','b']m2
céderait['x','y','a','b']
. (* sauf si la droite est nulle lorsqu'elle ajoute à la place une réflexion.)Python 3, 98
Cette
lambda
fonction reçoit une liste de chaînes (entrée) et renvoie une chaîne (le message décodé).Exemples:
la source
'=' == x[1:2]
sera vrai pourx = 'a=bc'
, ce qui ne fait pas partie du schéma d'encodageHaskell, 85 octets
Usage
La description
f
crée une table de recherche.concat[c|c<-x,[]==f[c]]
extrait le message.map(\v->maybe v id$lookup v$f x)
améliore la recherche.la source
JavaScript (ES6), 87 octets
la source
Rétine,
84827774 octetsPrend une liste séparée par des virgules en entrée. Notez la nouvelle ligne de fin
Essayez-le en ligne!
Explication:
Tout d'abord, nous déplaçons toutes les expressions du formulaire
.=.
à la fin de la chaîne et les séparons du message avec une double virgule (,,
). C'est ainsi que dans l'étape suivante, nous pouvons trouver tous les encodages en vérifiant si chaque caractère devant le,,
a une correspondance=.
après. Ceci est réalisé parM!&`(.).*,,.*\1=.|.+,
lequel trouve toutes ces correspondances et les place dans une liste de chaînes séparées par un saut de ligne. Nous modifions ensuite chaque chaîne pour ne contenir qu'un seul caractère non codé ou la version codée du caractère. Enfin, nous remplaçons tous les sauts de ligne et virgules par la chaîne vide afin que notre sortie soit bien formatée.la source
Lot, 188 octets
Explication: boucle deux fois la liste des chaînes (
for
aime commodément une chaîne au format CSV). La première fois, recherche les chaînes qui ne contiennent pas un=
comme deuxième caractère et les concatène au résultat. La deuxième fois, recherche les chaînes qui contiennent un=
comme deuxième caractère et effectue la substitution. (encore plus commodément, la substitution est déjà au format Batch.)la source
PHP, 116 octets
Version en ligne
la source
PHP,
8987 octetsdeux versions:
prend l'entrée des arguments de la ligne de commande; courir avec
-nr
.strtr
(traduction si l'argument contient
=
, message sinon).strtr
.la source
05AB1E , 31 octets
Essayez-le en ligne!
la source