- Notifications
You must be signed in to change notification settings - Fork25
A simple Sudoku generator and solver. 数独生成器和解题器
License
NotificationsYou must be signed in to change notification settings
MorvanZhou/sudoku
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This is a Sudoku game written in python, default to use Wave Function Collapse method.
pip install sudokum
A sudoku can be generated with amask_rate
. A full solution is generated when passingmask_rate=0
.
importsudokumg=sudokum.generate(mask_rate=0.7)print(g)"""[[1 0 0 5 0 0 0 0 3] [0 3 7 0 0 1 0 0 4] [0 0 0 0 0 2 0 0 0] [0 0 0 0 9 4 0 0 0] [0 0 4 0 0 0 0 3 2] [0 0 0 3 2 5 0 0 0] [0 0 0 0 0 0 2 0 0] [7 4 0 0 0 0 0 0 0] [8 0 0 0 0 3 1 0 0]]"""
To visualize the generating procedure, I have made a GUI for animating Wave Function Collapse in sudoku generation.
importsudokumsudokum.display_wfc()
Or you can get you hand on it by running following code.
importsudokumsudokum.display_wfc(human=True)
By usingsudokum.solve()
function, it tries to solve the puzzle.
importsudokumg=sudokum.generate(mask_rate=0.7)s=sudokum.solve(g)print(s)"""[[1 2 8 5 4 7 6 9 3] [6 3 7 9 8 1 5 2 4] [4 9 5 6 3 2 7 1 8] [2 1 3 7 9 4 8 5 6] [5 7 4 1 6 8 9 3 2] [9 8 6 3 2 5 4 7 1] [3 5 1 4 7 6 2 8 9] [7 4 2 8 1 9 3 6 5] [8 6 9 2 5 3 1 4 7]]"""
A solving max try number (default to 10) can set as following:
importsudokums=sudokum.solve(g,max_try=3)
If you have your own solution, you can validate it by following function:
importsudokumok,position_of_problems=sudokum.check(g)
More use cases can be found in mytest files.