Skip to content

jcoffland/fsudoku

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FSudoku

I hate Sudoku. It's a pointless waste of time that unlike crossword puzzles leaves you with no new knowledge. What really irritates me about Sudoku is that it pretends to be an puzzle for the math minded intelligentsia. This I cannot abide. So a few years ago, while stuck over night in the Lima Airport, I decided to crush Sudoku, once and for all, by solving all Sudoku puzzles in one fell swoop and in less than 300 lines of Python.

FSudoku not only solves any Sudoku puzzle it solves it quickly. The most difficult standard sized puzzles can be solved in less than two seconds a 3.1GHz Intel i7-3770S. The puzzles directory contains a number of different test puzzles which you can input into FSudoku like so:

./fsudoku < puzzles/hardest.txt

The above produces this output:

? ? ?  ? ? ?  ? ? ? 
? 1 ?  6 2 ?  ? 9 ? 
? ? 2  ? ? 9  3 1 ? 

? ? 4  ? ? 6  ? 8 ? 
? ? 8  7 ? 2  1 ? ? 
? 3 ?  8 ? ?  5 ? ? 

? 6 9  1 ? ?  4 ? ? 
? 8 ?  ? 7 3  ? 5 ? 
? ? ?  ? ? ?  ? ? ? 
-------------------
Solving . . . hard . . . done
9 4 5  3 1 7  2 6 8 
8 1 3  6 2 5  7 9 4 
6 7 2  4 8 9  3 1 5 

1 2 4  5 3 6  9 8 7 
5 9 8  7 4 2  1 3 6 
7 3 6  8 9 1  5 4 2 

2 6 9  1 5 8  4 7 3 
4 8 1  2 7 3  6 5 9 
3 5 7  9 6 4  8 2 1 

Note that FSudoku will also tell you if a puzzle is hard or not. Any puzzle which does not succumb immediately to the greedy algorithm is considered hard. Harder puzzles require testing different possible solutions and backtracking when those tests fail, until a solution is found.

About

A fast sudoku solver

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages