Sudoku solvers implemented in both Java using a buffered applet, and python using a GUI (requiring the tkinter library) and a command line version.
Both use a similar algorithm which combines simple sudoku rule based elimination (no repeated entries in rows, columns, or boxes), some added logical elimination, and a brute force solution. The algorithm sets up a list of possibilities for each space in the puzzle and then uses logical elimination first to narrow down the possibilities. If it reaches a point where simple logical cancellations will not alter the puzzle a solution is chosen in a square chosen by having the minimal possible solutions minimizing the error in selection of a value from the possibilities. The algorithm then uses that solutiion until it finds a solution or reaches a logical error in the puzzle in which case it reverts to the state before the solution was chosen and tries another value. Generally the solver can get through most puzzles with needing the brute force portion of the algorithm but it exists for puzzles that require more complex logical schemes to handle.