This week's book giveaway is in the OCPJP forum. We're giving away four copies of OCA/OCP Java SE 7 Programmer I & II Study Guide and have Kathy Sierra & Bert Bates on-line! See this thread for details.

No, that's not AI. Sudoku is a purely logical game - the fact that you can write down rules to solve it that always apply, no matter which state the game is in, is an indication of that. Putting a number down into a field is always either 100% correct or 100% wrong.

That's very different from a game like chess where, in any given position, there are multiple possible moves that lead to victory or defeat, some more likely than others to do so, and where the player needs to evaluate each move (or at least as many as possible).

There was a discussion on brute force solvers a while back: http://www.javaranch.com [ October 11, 2008: Message edited by: Ulf Dittmer ]

I wrote one that uses a recursive algorithm to solve Sudoku puzzles. If there are multiple solutions (or so solution), it will tell you that as well.
I tried to attach the source but I'm having trouble with attachments.

if box 1 has a number in row/col "x" and box2 has the same number in row/col "y", check the no of empty cells in row/col "z"
for each empty cell in "z", check in corresponding col/row [Note the order here, col/row not row/col] for same number.
if the number of cells that match is exactly 1, then that is the right number.

This is not an exhaustive rule, but this would solve some obvious parts of the puzzle.

I would suggest code:

you could also use special numbers for cells : eg -1 or 0 for an empty cell

parse and check entire row/col and find out missing numbers.
check every empty cell for possiblity of a number occuring there, if the number of possibility is exactly one, there you go...