Implementieren Sie den kürzesten Sudoku-Löser.
Sudoku-Puzzle:
| 1 2 3 | 4 5 6 | 7 8 9
-+-----------------------
A| 3 | 1 |
B| 6 | | 5
C| 5 | | 9 8 3
-+-----------------------
D| 8 | 6 | 3 2
E| | 5 |
F| 9 3 | 8 | 6
-+-----------------------
G| 7 1 4 | | 9
H| 2 | | 8
I| | 4 | 3
Antworten:
| 1 2 3 | 4 5 6 | 7 8 9
-+-----------------------
A| 8 3 2 | 5 9 1 | 6 7 4
B| 4 9 6 | 3 8 7 | 2 5 1
C| 5 7 1 | 2 6 4 | 9 8 3
-+-----------------------
D| 1 8 5 | 7 4 6 | 3 9 2
E| 2 6 7 | 9 5 3 | 4 1 8
F| 9 4 3 | 8 1 2 | 7 6 5
-+-----------------------
G| 7 1 4 | 6 3 8 | 5 2 9
H| 3 2 9 | 1 7 5 | 8 4 6
I| 6 5 8 | 4 2 9 | 1 3 7
Regeln:
- Angenommen, alle Labyrinthe sind nur durch Logik lösbar.
- Alle Eingaben sind 81 Zeichen lang. Fehlende Zeichen sind 0.
- Die Lösung als einzelne Zeichenfolge ausgeben.
- Das "Gitter" kann nach Belieben intern gespeichert werden.
- Die Lösung muss eine nicht erratene Lösung verwenden. (siehe Sudoku Solver )
Beispiel I / O:
>sudoku.py "030001000006000050500000983080006302000050000903800060714000009020000800000400030"
832591674496387251571264983185746392267953418943812765714638529329175846658429137
code-golf
game
puzzle-solver
sudoku
snmcdonald
quelle
quelle
Antworten:
RUBIN (
449436 Zeichen)Beispiel:
Kurze Erklärung:
Board
b
ist ein Array von 81 Arrays, die alle möglichen Werte für jede Zelle enthalten. Das Array in Zeile drei enthält [offset, start_index] für jede Gruppe (Felder, Zeilen, Spalten). Drei Aufgaben werden ausgeführt, während die Gruppen durchlaufen werden.d
Wenn es nur eine Instanz eines Werts gibt, setzen wir die enthaltende Zelle auf diesen Wert und markieren die Zelle, in der sie festgelegt istf
Wiederholen, bis alle Zellen repariert sind.
quelle
I=*(0..8)
, um 2 Zeichen zu sparen.sudokusolver.rb:8: unterminated string meets end of file
wenn ich damit anfangeruby1.8 sudokusolver.rb 030...
. Was mache ich falsch?Prolog - 493 Zeichen
Ausgabe:
Eingabe:
000000000000003085001020000000507000004000100090000000500000073002010000000040009
Ausgänge:987654321246173985351928746128537694634892157795461832519286473472319568863745219
Eingabe:
030001000006000050500000983080006302000050000903800060714000009020000800000400030
Ausgänge:832591674496387251571264983185746392267953418943812765714638529329175846658429137
quelle