Skip to content

MenxLi/sudoku.cpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A Sudoku game solver and generator, it deals with puzzles of any size (e.g. 4x4, 9x9, 16x16, etc.).

Build with size 9 (default):

make target -j SIZE=9

Then run with:

./bin/sudoku solve -i puzzles/1.txt     # solve a puzzle
./bin/sudoku generate -c 24             # generate a puzzle with 24 clues

Run benchmarks on included puzzles (time varies depending on difficulties):

> ./bin/benchmark
Benchmarking 3 puzzles with 100 repeats...
Puzzle 1:    5 [us]
Puzzle 2:   12 [us]
Puzzle 3:   74 [us]
Run on larger datasets.
> ./bin/benchmark ~/repo/sudoku-dataset/hard_sudokus.txt
Finished on 10000 cases
Success rate: 100%
Mean time: 32 [us]
Median time: 27 [us]
1st quartile time: 20 [us]
3rd quartile time: 39 [us]
Average guesses: 1.9085
Median guesses: 2

> ./bin/benchmark ~/repo/sudoku-dataset/all_17_clue_sudokus.txt
Finished on 49151 cases
Success rate: 100%
Mean time: 92 [us]
Median time: 41 [us]
1st quartile time: 33 [us]
3rd quartile time: 63 [us]
Average guesses: 11.7719
Median guesses: 1

> ./bin/benchmark ~/Downloads/16x16Dataset.csv
Finished on 3000 cases
Success rate: 100%
Mean time: 1105 [us]
Median time: 215 [us]
1st quartile time: 79 [us]
3rd quartile time: 300 [us]
Average guesses: 29.205
Median guesses: 0

Build with pybind11:

SIZE=9 pip install ./bindings
python demo.py -c 24

Environment variables:

  • SOLVER_USE_GUESS enable guessing when solving the puzzle. Default is 1.
  • SOLVER_HEURISTIC_GUESS enable heuristic choosing of starting cell when guessing. Default is 1.
  • SOLVER_DETERMINISTIC_GUESS enable deterministic solving. Default is 0.
  • SOLVER_USE_DOUBLE enable naked/hidden double solving. Default is 0.

About

A Sudoku game solver and generator

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published