Implementieren Sie einen verbalen arithmetischen Löser aus mehreren gleichen Zahlenfolgen, die zusammenaddiert werden:
TWO
+ TWO
-----
FOUR
REPEAT
REPEAT
REPEAT
+ REPEAT
--------
ANDSTOP
SPEED
+ SPEED
-------
KILLS
Es gibt einige Einschränkungen: Jeder Buchstabe sollte unterschiedliche Ziffern darstellen, und kein Buchstabe darf Null sein.
Implementieren Sie den Solver als Funktion der Operanden. Die Summe und Anzahl der Wiederholungen gibt eine Liste der Lösungen zurück (Lösung: das Tupel des resultierenden Operanden und der Summe). Zum Beispiel:
f(['T','W','O'], ['F','O','U','R'], 2) == [(734, 1468)]
Sie müssen Variablen nicht als Buchstaben darstellen und in der Lösung keinen Hash verwenden. Brute-Force-Suche erlaubt.
Der kürzeste Code gewinnt.
Antworten:
Mathematica
Zur Verdeutlichung hinzugefügte Leerzeichen. Nicht viel Golf gespielt.
Es müssen griechische Buchstaben verwendet werden, da die eingegebenen Buchstaben als Symbole behandelt werden.
Verwendungszweck:
Es wurde keine Lösung für SPEED + SPEED + SPEED = KILLS gefunden ... ist das ein Fehler?
Bearbeiten
Wenn Sie Null zulassen, werden die folgenden Lösungen für die Gleichung SPEED + SPEED + SPEED = KILLS gefunden:
Bearbeiten
Laut Kommentar:
quelle
Python
http://ideone.com/4wIQe
quelle
Scala:
333289Verwendungszweck:
quelle
PHP (200)
Die Ausführung dieser Funktion dauert sehr lange und benötigt viel Speicher, erfüllt jedoch die Kriterien.
Beispielnutzung:
Erklärung ohne Golf:
Wenn wir den Operanden und die Summe als Zeichenfolgen anstelle von Arrays eingeben dürfen, kann ich die Verknüpfungsoperationen überspringen und 20 Zeichen speichern, um die Summe auf 180 zu setzen.
quelle