Es gibt 40 Möglichkeiten, wie ein gerichteter Hamilton-Pfad in einem 3 × 3-Raster angeordnet werden kann:
Diese Grafik ( danke Sp3000! ) Zeigt nur die 20 ungerichteten Pfade. Überquere jede farbige Linie in beide Richtungen für die 40 gerichteten Pfade.
Herausforderung
Schreiben Sie unter Verwendung von ausschließlich druckbarem ASCII ein 3 × 3-Zeichenraster, z.
ABC
DEF
GHI
Wenn jeder der 40 gerichteten Pfade als 40 einzeilige Programme mit 9 Zeichen aus diesem Raster gelesen wird, ist es das Ziel, dass jedes Programm eine eindeutige Ganzzahl von 1 bis 40 ausgibt. Dies für alle 40 Pfade zu tun, erscheint schwierig und unwahrscheinlich. Sie müssen es also nur für so viele Pfade wie möglich zum Laufen bringen.
Die Einsendung, deren 40 Pfadprogramme die deutlichsten Zahlen von 1 bis 40 ausgeben, wird der Gewinner sein. Tiebreaker geht auf die frühere Vorlage.
Pfadprogramme, bei denen ein Fehler auftritt oder die keine Ganzzahl von 1 bis 40 ausgeben, oder die eine Ganzzahl ausgeben, die bereits von einem anderen Pfadprogramm behandelt wurde, werden nicht gezählt. Speziell:
- Programme, die beim Kompilieren, Ausführen oder Beenden fehlerhaft sind, werden nicht gezählt. Warnungen sind in Ordnung.
- Programme, die keine Ganzzahl von 1 bis 40 ausgeben oder etwas leicht Missgebildetes ausgeben, wie z. B.
-35
oder,35 36
werden nicht gezählt. - Programme, für deren Ausgabe Benutzereingaben erforderlich sind, werden nicht gezählt.
- Programme, die niemals enden, werden nicht gezählt.
- Von nun an werden Programme, die nicht deterministisch sind, nicht mehr gezählt.
- Andernfalls werden gültige Programme, die eine Ganzzahl von 1 bis 40 ausgeben, die bereits von einem anderen gültigen Programm ausgegeben wurden, nicht gezählt. (Das erste Programm wird gezählt.)
- Nur Programme, die ganzzahlige Darstellungen von Zahlen von 1 bis 40 (einschließlich) ausgeben, werden auf Ihre Gesamtsumme angerechnet. Die Zahlen werden voraussichtlich in der üblichen sein
1
,2
, ...,39
,40
Form, sofern dies nicht die Norm für Ihre Sprache ist. (Eine nachgestellte Zeile in der Ausgabe ist in Ordnung.) - Welche Zahlen Ihre Programme ausgeben und in welcher Reihenfolge sie sich befinden, spielt keine Rolle. Nur die Anzahl der verschiedenen Ganzzahlen aus gültigen Programmen ist von Bedeutung.
Alle Pfadprogramme müssen in derselben Sprache ausgeführt werden. Die "Programme" können jedoch Funktionen (ohne erforderliche Argumente) oder REPL- Befehle sowie vollständige Programme sein, die ihre Ziel-Ganzzahl ausgeben oder zurückgeben. Sie können Funktionen, REPL-Befehle und vollständige Programme mischen und abgleichen.
Ihre 9 druckbaren ASCII-Zeichen müssen nicht eindeutig sein.
Beispiel
Wenn dein 3 × 3 Raster wäre
ABC
DEF
GHI
und Ihre 40 Programme und Ausgaben sahen so aus
ABCFEDGHI -> 26
ABCFIHEDG -> 90
ABCFIHGDE -> 2
ABEDGHIFC -> syntax error
ADEBCFIHG -> prints 40 but then errors
ADGHEBCFI -> 6
ADGHIFCBE -> 6
ADGHIFEBC -> 6
CBADEFIHG -> runtime error
CBADGHEFI -> 3
CBADGHIFE -> 4
CFEBADGHI -> -32
CFIHEBADG -> 38.0
CFIHGDABE -> "36"
EDABCFIHG -> 33
EFCBADGHI -> no output
EHGDABCFI -> compilation error
EHIFCBADG -> 8
GDABCFEHI -> 22
GHEDABCFI -> 41
IHGDEFCBA -> 0
GDEHIFCBA -> '9'
EDGHIFCBA -> +10
CFIHGDEBA -> 11
GHIFCBEDA -> error
IFCBEHGDA -> error
EBCFIHGDA -> prints 23 but then loops infinitely
CBEFIHGDA -> randomly prints either 24 or 44
GHIFEDABC -> error
IFEHGDABC -> 30
EFIHGDABC -> 39
IHGDABEFC -> 7
GDABEHIFC -> 29
EBADGHIFC -> -1
GHIFCBADE -> 26
IHGDABCFE -> 1
IFCBADGHE -> error
GDABCFIHE -> no output
IHEFCBADG -> no output
IFCBADEHG -> "quack"
Ihre Punktzahl wäre 14, da es 14 verschiedene Ganzzahlen von 1 bis 40 gibt, die gültig ausgegeben werden, nämlich 26 2 6 3 4 33 8 22 11 30 39 7 29 1
.
123654789