A great help in solving sudoku is to make a table (

**the candidate table**) of possible candidate numbers, which may be placed in each of the empty squares at each stage. For example the number 2 cannot be placed in a square, if there is already a number 2 in the row, column or block in which the square is placed.

A good sudoku program can automati- cally calculate the candidate table and show it directly on the sudoku board in such way that you can see the possible numbers (the candidate numbers) for each of the empty squares. If a square has only one candidate (an obvious

**single candidate**), then that number should be placed in the square. A single candidate may also be hidden among other candidates in a square (hidden single candidate).

When you find a square with a single candidate, then you can place that number in the square. Thereafter that candidate number needs to be removed from the candidate table for the three groups (row, column and block) of which the square is a part. A good sudoku program would do this automatically.

You can solve the easy sodoku puzzles just by finding single candidates. To solve the more difficult Sudoku puzzles, you need to reduce the number of candidates until single candidates appear. There are many methods for reducing candidates. Your sudoku program should be able to suggest

**candidate reduction**according to a considerable number of methods. These include ’locked’ candidate, ‘naked’ candidates (pairs, triples, quads), ‘hidden’ candidates (pairs, triples, quads) and the more special x-wing, swordfish and Jellyfish.

Other features of a good sudoku program would include: easy entering of suduko puzzles from newspapers, books and magazines, saving and loading of puzzles, saving of sudoku puzzles in progress, a go back one step option, printing of sudoku puzzles, a timer option to record the time used to solve a given puzzle and a recording of the solving process.