Sie dachten, normales Sudoku sei schwer, versuchen Sie es jetzt mit Killer Sudoku !
Im Spiel Killer Sudoku erhalten Sie überhaupt keine Zahlen. Stattdessen erhalten Sie Regionen, die sich zu einer bestimmten Anzahl summieren sollen. Betrachten Sie das folgende Beispiel aus Wikipedia:
Und seine Lösung:
Das Programm, das Sie schreiben, hat ein Format, das aus einer Folge von 81 Buchstaben besteht, die Regionen darstellen, gefolgt von einer Folge von Zahlen. Dann repräsentiert jede Zahl in der Sequenz die Summe der Zahlen in jedem der Buchstabenbereiche, beginnend mit "A", "B" usw.
Es wird dann eine Folge von 81 Ziffern ausgegeben, die die Lösung darstellen.
Das obige Beispielpuzzle hätte beispielsweise die folgende Eingabe:
AABBBCDEFGGHHCCDEFGGIICJKKFLMMINJKOFLPPQNJOORSPTQNUVVRSTTQWUUXXSYZWWaaXXSYZWbbbcc
3 15 22 4 16 15 25 17 9 8 20 6 14 17 17 13 20 12 27 6 20 6 10 14 8 16 15 13 17
Und die resultierende Ausgabe wäre:
215647398368952174794381652586274931142593867973816425821739546659428713437165289
Sie können davon ausgehen, dass die Eingabe gültig ist und die Bereiche immer in der Reihenfolge A, B, ..., Y, Z, a, b, ..., z angezeigt werden.
(Der kürzeste Code, der funktioniert, gewinnt.)
quelle
Antworten:
R - 378 Zeichen
Vorausgesetzt
378 Zeichen:
Nach 2.964.690 Iterationen dauert es auf meinem bescheidenen PC ungefähr eine Stunde, bis die erwartete Lösung erreicht ist.
De-Golf gespielt:
quelle
GolfScript, 138 Zeichen
Dies ist ein Killer-Sudoku-Löser in GolfScript. Es wird eine Eingabe in STDIN in zwei Zeilen erwartet, wie im obigen Beispiel angegeben.
Bitte beachten Sie: Da die Beschreibung des Puzzles keine Einschränkungen für die Ausführungszeit enthält, habe ich eine kleine Codegröße der Geschwindigkeit vorgezogen. Der Code testet alle 9 ^ 81 Grid-Konfigurationen auf eine Lösung, die auf einem langsamen Computer einige Zeit dauern kann ;-)
quelle
AABBCADEFFDDGGGG
6 7 4 8 2 3 10
Ruby, 970 Zeichen
Der obige Ruby-Code steht im Gegensatz zu meinem GolfScript-Abonnement. Es ist ziemlich lang (und noch nicht vollständig golfen), aber auf Geschwindigkeit optimiert. Das oben angegebene Killer-Sudoku ist in weniger als einer Sekunde gelöst (mit meiner ursprünglichen Java-Version waren es nur wenige Millisekunden). Der Solver selbst ist eine grundlegende Implementierung des DLX-Algorithmus von Knuth.
Die Eingabe muss in zwei Zeilen auf STDIN erfolgen. Beispiel ( online ):
quelle