I have been interested in the application of patterns to solve sudokus, and have used them in two different capacities in my online solver (www.philsfolly.net.au). I order to achieve this I developed a method to generate all possible patterns for each number for a given puzzle state. Patterns are nice because by definition they already conform to the basic constraint rules. It occurred to me that these patterns could be employed to directly solve puzzles, and I've recently implemented it in my solver. Briefly, one takes the first pattern of number 1 and adds the 9 addresses to an array. One then takes the first pattern of number 2 and checks if any one of its 9 addresses coincides with one of those of the pattern for 1. If not, its 9 addresses are added to the array, otherwise it is discarded and the second pattern of number 2 is taken. By working through digits 1 to 9 using this process, one eventually ends up with all 81 addresses in the array, and the puzzle is solved.

In practice it should be used when basic techniques are exhausted, since the fewer the number of patterns the quicker the solution. Most simple puzzles are solved in moments. However, it can be applied at any stage in the process. As an example, after the SK loop eliminations in the 'easter monster' (146 extra candidates left), the puzzle is solved in a second or so.

If this was re-coded in C by someone with good programming skills, I imagine it would be impressively fast.

PJB