Suchen Sie bei zwei gegebenen Zeichenfolgen die Übersetzungstabelle ( Substitutionsschlüssel) ) zwischen den beiden, und geben Sie false aus, wenn die Übersetzung nicht möglich ist. Die Antwort muss minimiert und von links nach rechts erstellt werden. Das erste zwischen Wörtern zu übersetzende Zeichen muss das erste in der Übersetzungstabelle sein. Darüber hinaus sollte jeder Buchstabe, der nicht übersetzt wurde (an der gleichen Stelle wie ursprünglich), NICHT in der Übersetzungstabelle enthalten sein.
Wahrscheinlich am einfachsten durch Beispiele zu definieren:
Gültige Fälle
"bat", "sap" => ["bt","sp"]
Beachten Sie die Bestellung, eine Ausgabe von ["tb","ps"]
ist für diese Challenge nicht gültig.
"sense", "12n12" => ["se","12"]
Beachten Sie, dass das n
nicht übersetzt wird, da es sich um eine 1: 1-Beziehung handelt.
"rabid", "snail" => ["rabd","snal"]
Beachten Sie, dass das i
nicht übersetzt wird, da es sich um eine 1: 1-Beziehung handelt.
"ass", "all" => ["s","l"]
A ist nicht enthalten, es bleibt gleich, s
kann l
aufgrund der Musterübereinstimmung zugeordnet werden.
"3121212", "ABLBLBL" => ["312","ABL"]
Passt perfekt zum Muster.
Falsche Fälle
"banana", "angular" => false
(nicht die gleiche Länge, unmöglich).
"animal", "snails" => false
(Jedes Zeichen kann nur EINMAL auf jeder Seite der Übersetzung verwendet werden.)
"can","cnn" => false
(n wird implizit in der Übersetzung verwendet, daher wäre die Definition einer Übersetzungstabelle mit n-> a ungültig.)
Somit [aimal,sails]
ist eine ungültige Antwort, die dies falsch macht.
"a1", "22" => false
Siehe "Vorbehalte", dies wird als falsch aufgeführt. In diesem Fall ist es , weil a
und 1
nicht beide abbilden können 2
. (Jedes Zeichen kann nur EINMAL auf jeder Seite der Übersetzung verwendet werden.)
Diese Antwort scheint ein guter Maßstab zu sein: /codegolf//a/116807/59376
Wenn Sie Fragen zur Funktionalität von zwei nicht aufgelisteten Wortpaaren haben, verschieben Sie diese Implementierung.
I / O-Regeln
- Die Eingabe kann als 2-Element-Array oder als 2 separate Eingaben erfolgen.
- Die Ausgabe kann als Array oder durch Zeilenumbrüche / Leerzeichen begrenzt sein, ähnlich wie ich es gezeigt habe.
- Falsche Ausgabe kann 0, -1 oder falsch sein. Fehlerhafte / leere Ausgabe ist auch in Ordnung.
- Sie sind garantiert, dass
a
nicht gleichb
und wedera
nochb
leer sein wird. a
undb
sind druckbare ASCII-Buchstabenfolgen.
Vorbehalte
- Übersetzungen müssen von links nach rechts erfolgen, siehe Beispiel 1.
- Sie dürfen keine Zeichen ausgeben, die gleich bleiben.
- Ihr Programm kann nur zwei Zeichenfolgen enthalten
a
undb
. - Jedes Zeichen kann nur EINMAL auf jeder Seite der Übersetzung verwendet werden. Dies macht die Übersetzung von
snails
nachanimals
unmöglich. - Rekursive Ersetzungen sollten nicht auftreten. Beispiel für rekursives Ersetzen:
"a1","22"->[a1,12]
Wenn a zuerst durch eine 1 ersetzt wird, werden beide resultierenden Einsen durch Zweisen ersetzt. Dies ist nicht korrekt, vorausgesetzt, alle Übersetzungen erfolgen unabhängig voneinander, was bedeutet, dass dies falsch ist. Bedeutung: "a1" mit Übersetzungstabelle von [a1,12] ergibt 12 (nicht 22)