Implémentez le solveur Sudoku le plus court.
Puzzle Sudoku:
| 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
Répondre:
| 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
Règles:
- Supposons que tous les labyrinthes ne peuvent être résolus que par logique.
- Toutes les entrées comporteront 81 caractères. Les caractères manquants seront 0.
- Générez la solution sous forme de chaîne unique.
- La "grille" peut être stockée en interne comme vous le souhaitez.
- La solution doit utiliser une solution ne devinant pas. (voir Solveur Sudoku )
Exemple d'E / S:
>sudoku.py "030001000006000050500000983080006302000050000903800060714000009020000800000400030"
832591674496387251571264983185746392267953418943812765714638529329175846658429137
code-golf
game
puzzle-solver
sudoku
snmcdonald
la source
la source
Réponses:
RUBY (
449436 caractères)Exemple:
explication rapide:
Board
b
est un tableau de 81 tableaux contenant toutes les valeurs possibles pour chaque cellule. Le tableau de la troisième ligne contient [offset, start_index] pour chaque groupe (boîtes, lignes, colonnes). Trois tâches sont effectuées lors de l'itération à travers les groupes.d
- s'il n'y a qu'une seule instance d'une valeur, nous définissons la cellule conteneur à cette valeur et marquons la cellule fixée dansf
Répétez jusqu'à ce que toutes les cellules soient fixes.
la source
I=*(0..8)
, vous économiserez 2 caractères.sudokusolver.rb:8: unterminated string meets end of file
si je commence parruby1.8 sudokusolver.rb 030...
. Qu'est-ce que je fais mal?Prolog - 493 caractères
Sortie:
Entrée:
000000000000003085001020000000507000004000100090000000500000073002010000000040009
Sorties:987654321246173985351928746128537694634892157795461832519286473472319568863745219
Entrée:
030001000006000050500000983080006302000050000903800060714000009020000800000400030
Sorties:832591674496387251571264983185746392267953418943812765714638529329175846658429137
la source