The sudoku servant server helps you solve sudoku puzzles by showing choices satisfying two simple rules: at-most-one and at-least-one of every digit must appear in every row, column and square.

Sudokant screen showing links to possible solutions for a suspected diabolical puzzle. page

Choices that violate the at-most-one rule are omitted.

Alternatives to digits that must be chosen by the at-least-one rule are grayed.

Empty squares are dead ends. Back up the browser to make a new choice.

The above rules are insufficient to solve the hardest puzzles. You can guess or look for a third rule. This program will help you find these most interesting places in the hardest puzzles without becoming a mechanical master of the simpler logic.

Each step has a unique url that you can bookmark or send to friends. Use this blank page to enter new puzzles.

Contribute your insights and most diabolical puzzles to the SuDoku page on my wiki.


I bought a sudoku book at the airport on a trip to Boston. The flight passed quickly. On my return I found that I had left the book at my hotel. Instead I wrote this solver during the four hour flight home. source

I used hyperlinks to new game states which I encoded as digits or dots in the cgi query string. This created a huge hypertext subspace that eventually search engine robots sought to explore.


The SQLite documentation includes a section, Outlandish Recursive Query Examples, that includes a similar Sudoku solver. The active part is a WHERE clause with the conditions for a solution. sqlite

WHERE z.z = substr(s, ((ind-1)/9)*9 + lp, 1) OR z.z = substr(s, ((ind-1)%9) + (lp-1)*9 + 1, 1) OR z.z = substr(s, (((ind-1)/3) % 3) * 3 + ((ind-1)/27) * 27 + lp + ((lp-1) / 3) * 6, 1)