I wrote a free solver/helper a few years ago called Jet Sudoku
Please feel free to download it here: http://manifestmaster.com/jetsudoku
I'm trying to update it to create new puzzles at random. This brings up
the issue of determining puzzle validity. As you know, a sudoku puzzle
is only valid if it is solvable and has only one solution.
One can prove that a puzzle is solvable by using traditional solving techniques,
but that does not prove that it cannot have more than one solution.
I had to come up with my own algorithm which I believe works but I'd like to
hear feedback from other programmers. Here's what Jet Sudoku does now:
Step 1: Solve the puzzle using brute force only, starting from r1c1 to r9c9
moving left to right.
Step 2: Solve the puzzle again using brute force only but starting from r9c9 to r1c1
moving right to left.
Compare the two solutions. If they're identical then I believe that the puzzle only
has one solution.
But I wonder if this is good enough.
I've considered using brute force two more times going down columns instead of across
rows, then doing it backwards.
I would appreciate any thoughts or feedback.