Hintergrund
Sudoku ist ein Zahlenrätsel, bei dem bei einem in Felder der Größe unterteilten Raster jede Zahl von bis in jeder Zeile, Spalte und jedem Feld genau einmal vorkommen sollte.
Im Schachspiel kann der König in einer Runde in eine von maximal 8 benachbarten Zellen ziehen. "Angrenzend" bedeutet hier horizontal, vertikal oder diagonal benachbart.
Die Königstour ist eine Analogie zur Rittertour; Es ist ein (möglicherweise offener) Pfad, der mit den Bewegungen von Chess King jede Zelle genau einmal auf dem angegebenen Brett besucht.
Aufgabe
Betrachten Sie ein 6-mal-6-Sudoku-Gitter:
654 | 321
123 | 654
----+----
462 | 135
315 | 246
----+----
536 | 412
241 | 563
und eine Königstour (von 01
bis 36
):
01 02 03 | 34 35 36
31 32 33 | 04 05 06
---------+---------
30 23 28 | 27 26 07
22 29 24 | 25 09 08
---------+---------
21 19 16 | 10 14 13
20 17 18 | 15 11 12
Die Tour bildet die 36-stellige Nummer 654654564463215641325365231214123321
.
Wenn Sie eine andere Königstour unternehmen, erhalten Sie eine größere Anzahl. Zum Beispiel kann ich einen Pfad finden, 65<6>56446556...
der definitiv größer ist als der oben genannte. Sie können das Sudoku-Board ändern, um noch höhere Zahlen zu erhalten:
... | ...
.6. | ...
----+----
..6 | ...
.5. | 6..
----+----
.45 | .6.
6.. | 5..
Diese unvollständige Tafel gibt die Startsequenz an, 666655546...
deren optimale Sequenz aus 9 Startziffern besteht.
Ihre Aufgabe ist es , die größte solche Zahl für Standard-9-mal-9-Sudoku mit 3-mal-3-Boxen zu finden , dh
... | ... | ...
... | ... | ...
... | ... | ...
----+-----+----
... | ... | ...
... | ... | ...
... | ... | ...
----+-----+----
... | ... | ...
... | ... | ...
... | ... | ...
Beachten Sie, dass es sich bei dieser Herausforderung nicht um Code-Golf handelt . Der Fokus liegt darauf, die Lösungen tatsächlich zu finden, anstatt ein kleines Programm zu schreiben, das theoretisch funktioniert.
Bewertungs & Gewinnkriterium
Das Ergebnis einer Einreichung ist die 81-stellige Zahl, die von Ihrem Programm gefunden wurde. Die Einsendung mit der höchsten Punktzahl gewinnt. Ihr Programm sollte auch das Sudoku-Raster und die Königstour in lesbarer Form ausgeben. Bitte fügen Sie sie Ihrer Einreichung bei.
Ihr Programm gibt möglicherweise mehrere Ergebnisse aus. Ihre Punktzahl ist das Maximum von ihnen.
Es gibt keine zeitliche Begrenzung für Ihr Programm. Wenn Ihr Programm weiterhin ausgeführt wird und danach eine höhere Zahl findet, können Sie die Bewertung der Einreichung aktualisieren, indem Sie den Beitrag bearbeiten. Tiebreaker ist der früheste Zeitpunkt, zu dem die Punktzahl erreicht wird, dh entweder der Zeitpunkt des Posts (falls er noch nicht bearbeitet wurde) oder der Zeitpunkt der Bearbeitung, zu dem die Punktzahl aktualisiert wurde (ansonsten).
quelle
Antworten:
Python + Z3 , 999899898789789787876789658767666545355432471632124566352413452143214125313214321, optimal
Läuft in einer halben Stunde und produziert
Code
quelle