I wrote something to solve sudoku puzzles as practice in c++.
The basic idea is that there is a secondary matrix (called smatrix) that is 3-dimensional. I think of it as layers of 2-dimensional sudoku's stacked on top of one another. In each layer, it has the sudoku board stored, only with 1's and 0's. A zero means that the number can be there, and a one means it can't (because I wasn't thinking when I made it, and I don't want to go back and switch them). Thus, each layer stores the possible places that [layer index] can go.
From there, it finds places that can only be one digit, and it puts that digit there and starts over.
I think that my problem is with the defining of smatrix, but I have looked over it several times and as far as I can tell it should work.
Also--I know that this is not a complete solving algorithm. I have a lot more work to go, but this should solve easy puzzles.
The code for the solving algorithm is posted below, and the full .cpp file is attached.
Thanks.
* The Best Reasons to Target Windows 8
Learn some of the best reasons why you should seriously consider bringing your Android mobile development expertise to bear on the Windows 8 platform.