Sudoku is the latest puzzle craze. Im not all that good at solving them by hand, so I wrote a program to do it. My mother and I created the design together. She used to be a programmer at Bell Labs and plays sudoku quite a bit. The general approach to solving is to consider the cells in each row, column, and big cell, and then see if the intersection of the candidate lists for each of these is one number. If so, fill it in. When youve done that for all cells, repeat. It usually only takes a few iterations to find the solution. Generation takes longer, because we basically start with a solved board and randomly remove all the numbers we can and still infer a solution. This means we have to solve the whole board each time we remove a number.