http://www.eddaardvark.co.uk/sudokusolver.html
@luskos
There are some logic routines that I haven't included in logical_solve() because they are far too hard for me to describe to a computer efficiently. In these cases, I think it'd be best to just have a brute force method. It'd take much less time to program, and not much more time to solve. In the link above, see the "pairs" section. I think programming that would take too long unless you have a real fast way.
@Van B
See the link above. The last puzzle he walks through has 32 solutions. I agree that guesswork takes away from the puzzle, but I want to make an infallible solution generator that will even solve a blank puzzle.
@Green Gandalf
Sounds like a GREAT counting problem I will present to my math professor

. How many total maps can you make, both valid and invalid, and how many of those maps are valid. From there, you can do all sorts of fun stuff. Also, I have read other websites where brute force methods are used, and they seemed to work. One was clocked at <500ms.
The brute force method I'd like to implement is just so I don't have to describe every logical situation to the computer. I did the most simple and common ones found in sudoku, but some are just too long to describe. A brute force method would save me time programming and fill in all of the logic techniques I missed.
Say you had 3 blank slots left (in reality, hard ones would have a lot more left after my logical_solve() function. For now, lets pretend 3 is a large number). Slot 1 has 3 possibilities, slot 2 has 5 possibilities, and slot 3 as 2 possibilities. How do I get it to guess each situation? There's always this:
Slot 1 2 3
Choice 1 1 1
1 1 2
1 2 1
1 2 2
ect... counting up, doing check_complete() after every one until a -2 is returned.
This shouldn't be too hard, but I was hoping someone would come up with a cool idea to use logical_solve() in conjunction with this brute force method to make it go faster, and perhaps eat less memory. Obviously memory isn't going to be a real issue, but I like my programs to have certain slim fast diets.
edit:
@paul5147
These programs are AMAZING. Can you send me the code for these 2, or is it part of that GUI package from earlier? I didn't remember seeing it. I'd like to see the logic you used for the diabolical ones.