Étant donné deux chaînes, recherchez la table de traduction ( chiffrement de substitution ) entre les deux, si la traduction n'est pas possible, affichez false. La réponse doit être minimisée et créée de gauche à droite. Le premier caractère à traduire entre les mots doit être le premier du tableau de traduction. En plus de cela, toute lettre qui n'est pas traduite (au même endroit qu'à l'origine), NE DOIT PAS être dans la table de traduction.
Probablement le plus facilement défini par des exemples:
Cas valides
"bat", "sap" => ["bt","sp"]
Notez la commande, une sortie de ["tb","ps"]
n'est pas valide pour ce défi.
"sense", "12n12" => ["se","12"]
Remarquez comment le n
n'est pas traduit car il s'agit d'une relation 1 à 1.
"rabid", "snail" => ["rabd","snal"]
Remarquez comment le i
n'est pas traduit car il s'agit d'une relation 1 à 1.
"ass", "all" => ["s","l"]
A n'est pas inclus, il reste le même, s
peut être mappé en l
raison de la correspondance de modèle.
"3121212", "ABLBLBL" => ["312","ABL"]
Correspond parfaitement au motif.
Cas de falsification
"banana", "angular" => false
(pas la même longueur, impossible).
"animal", "snails" => false
(chaque caractère ne peut être utilisé UNE FOIS de chaque côté de la traduction).
"can","cnn" => false
(n est implicitement utilisé dans la traduction, par conséquent, définir une table de traduction avec n-> a serait invalide)
Ainsi, [aimal,sails]
est une réponse invalide, ce qui rend cette fausse.
"a1", "22" => false
Voir "mises en garde", cela est répertorié comme falsifié. Dans ce cas, c'est parce que a
et 1
ne peuvent pas tous les deux correspondre à 2
. (Chaque caractère ne peut être utilisé UNE FOIS de chaque côté de la traduction).
Cette réponse semble être une bonne référence: /codegolf//a/116807/59376
Si vous avez des questions sur la fonctionnalité de deux paires de mots non répertoriés, reportez-vous à cette implémentation.
Règles d'E / S
- L'entrée peut être un tableau à 2 éléments ou 2 entrées distinctes.
- La sortie peut être un tableau ou une nouvelle ligne / délimitée par un espace, similaire à la façon dont je l'ai montré.
- La fausse sortie peut être 0, -1 ou fausse. Une sortie erronée / vide convient également.
- Vous êtes assuré que
a
ce ne sera pas égalb
et nia
nib
ne sera vide. a
etb
sont des séquences de lettres imprimables en ASCII uniquement.
Avertissements
- Les traductions doivent se produire de gauche à droite, voir l'exemple 1.
- Vous ne devez pas générer de caractères qui restent identiques.
- Votre programme ne peut prendre que deux chaînes
a
etb
. - Chaque caractère ne peut être utilisé UNE FOIS de chaque côté de la traduction. Ce qui fait la traduction
snails
d'animals
impossible. - Les remplacements récursifs ne devraient pas se produire. Exemple de remplacement récursif:
"a1","22"->[a1,12]
où a est d'abord remplacé par un 1, puis les deux 1 résultants sont remplacés par 2. Ce n'est pas correct, supposons que toutes les traductions se produisent indépendamment les unes des autres, ce qui signifie que c'est faux. Signification: "a1" avec table de traduction de [a1,12] est évalué à 12 (pas 22)