The idea is that, given such a pattern, all unique permutations of it is made through swapping rows and columns, and then each permutation is applied to each of the essentially different sudokus and then checked for solvability and uniqueness. Then you have all essentially different sudokus possible with that bit pattern, and you can then swap the rows and columns back to assemble the original pattern. Of course, often there will be more than one way to do that with a pattern if there is any symmetry, but still all sudokus with that pattern will be represented by the collection built from this.
But here's the problem. If I want to have the top row be minlex, I gather that I should be able to skip all column swaps of the bit pattern, but I am not 100 % sure that that will truly give me all possible sudokus with that pattern, or whether I will be missing out on some.
Take this bit pattern for instance:
- Code: Select all
X.X X.X X.X
X.X X.X X.X
X.X X.X X.X
X.X X.X X.X
X.X X.X X.X
X.X X.X X.X
X.X X.X X.X
X.X X.X X.X
X.X X.X X.X
Swapping rows won't change anything about the pattern, and by choosing not to swap columns there is only this possible permutation of the pattern. So I should get 5472730538 sudokus with this pattern, out of which some number will be solvable and unique. But will this really give me all the representatives of all possibly sudokus with this pattern? That is where I am in doubt.