É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 nn'est pas traduit car il s'agit d'une relation 1 à 1.
"rabid", "snail" => ["rabd","snal"]
Remarquez comment le in'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, speut être mappé en lraison 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 aet 1ne 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
ace ne sera pas égalbet nianibne sera vide. aetbsont 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
aetb. - Chaque caractère ne peut être utilisé UNE FOIS de chaque côté de la traduction. Ce qui fait la traduction
snailsd'animalsimpossible. - 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)