Please excuse me barging straight in with a major request.
I have a long running C++ project that generates Sudoku Puzzles en-batch.
The basic methodology is to randomly permutate one from a set of complete solutions, then take away cells that can be deduced until no more cells can be removed.
Each deduction method has it's own rating, and at every stage, a random cell is picked from those with the highest deduction rating.
So far I have coded the following deduction methods:
1) Unnamed - Look for single cell values when possible row values are matched against possible column values against possible block values
2) Simple Counting (Reiterative) - Is there only one destination for a single value in a row/column/block, and/or one value for a single cell
3) Sub-Group Analysis - If all the destinations for a value are in a row/block subgroup, they can be excluded from the rest of the row and block etc
4) Twin Analysis - Naked and Hidden Twins where all the twinned values are possible in all the twinned cells
5) Cyclic Analysis - Naked and Hidden Twins where the twinned values are cycled through the twinned cells
6) X Wing Analysis
7) XY Wing Analysis
8) Swordfish Analysis
Note - Although I have only labelled 2) as reiterative, everything except 1) is reiterative, and gets called in a loop until no more changes are possible and/or the potentially removable cell has been identified as deducable.
Does anyone have any suggestions as to which deduction method I could add next?