dukuso wrote:> list some hundred of grid-transformations=operations , maps to manipulate a valid grid
> so to obtain another usually non-equivalent grid.
that's not so easy, not so fast. The easy transformations would generate
isomorphic sudokugrids.
You can generate sudokugrids by solving sudokus with multiple solutions.
But again, I assume that's too slow.
We want a procedure to walk through 5.4e9 grids, one from each S-class,
and then maybe call a subroutine to check some property.
You can read the grid from HD , that needs about 3 hours and 450 GB
You can use compressed grids, but that needs ~1 extra day for decompresion.
You can use sudokus with the last band missing and then just lookup all
the solutions in a table. Then examine which of these are in a new
S-class, lookup some checksum
~5e9 lookups is a challenging problem
some generation loops could generate another order of magnitude or more grids to be checked
the beauty of what I did (aha moment many moons ago) was to optimize comparison lookups to one comparison per grid
the inner generation loop generates grids in canonical order (so its a canonicalizer)
it keeps track of the previous canonicalized grid entered
if the current canonicalized grid is lexicographically <= the previous one then it is a dup and not entered
otherwise its a new grid and it is entered
"entered" here means: copy to output and replace the previous grid with the current grid
so the working data for the inner loop is 2 grids, previous and current
all of the other data is simply output and not referenced again by the inner loop
some places to speed up the inner loop
- quicker grid validity check
- quicker grid canonicalization