For each of the nine numbers, a pattern is the set of 9 numbers which follow the rule that there is one in each row, one in each
column, and one in each box. Any one of the 9 members of a pattern must not be able to see any other. Whereas a solved puzzle has
just one pattern for a given number, an unsolved puzzle may have a hundred or more valid patterns for that number. By determining
all the patterns for a number, there is an opportunity to make eliminations. If all patterns for a number pass through one cell,
this this can be assigned to the number. Alternatively, because some of the instances of the number may not be part of any pattern,
then they can be removed. A rather splendid example of this is the following puzzle:
This is quite a tough puzzle which is rendered considerably easier using POM. First it removes two 3's from r1c1 and r4c4. Then
it jumps to 9 and an amazing 20 eliminations follow. After this the puzzle solves easily with ALSs and chains. However, in Top95, #7,
there are over 2000 patterns for 9, but no eliminations. The method I developed here involves firstly generating all valid patterns for each
of the numbers 1 to 9, and checking to see if a number exists in an unsolved cell which has no pattern for that number passing through the
cell. Such numbers can be eliminated. If a cell exists through which all patterns for a number pass, then that cell can be solved for that number.
Puzzles in the Top 95 set solved by POM are 22, 51, 72, 74, 76.
If all of the patterns for a number pass through one or other of two cells, then one (or both) of these cells must contain the number.
This fact can be put to work as follows. When all the patterns for a different number are inspected to see if they go through
both of the cells, those patterns that do pass through both must be invalid and can be eliminated. The remaining patterns for
the number are then tested as above to see if there are any numbers which are not part of any of the remaining patterns, or if
all remaining patterns pass through a single cell. The following example is from
Sudopedia, and below is the first of four consecutive eliminations with this method:
The method employed here involves generating an array of 18 digit strings, each string containing
the 9 two digit addresses of a pattern. This array is then transformed into a 9x9 array inwhich the patterns, named "0001", "0002",
etc, are allotted to the cells they pass through. As patterns for a number not uncommonly exceed 1000, four digit numbers are required
to uniquely identify the patterns. This makes it easy to work out if all patterns pass through a single cell, or if all patterns pass through
one or other of 2 cells, or else if no patterns pass through a cell which contains the number.
The method is also extended to include identifying 3 cells which together include all patterns for one number. Then patterns of a second number
which pass through all 3 cells can be deleted, and the remaining patterns tested for further eliminations as above.
A forth method involves finding patterns of one number which clash, ie have one or more cells in common, with each pattern of another number,
and be thus removed. I've arranged it so that with each of the four methods, the resulting reduced set of patterns is carried on to the next stage.