Sojourner9 wrote:blue wrote:Preliminaries ...
1) set up a "best case" (result) grid that r4c1 set to 10, the best band result in band 1, and garbage everywhere else.
2) look up the "one of 416" index for the best case band 1, and use it to look up a list of band 1 automorphisms
The automorphism list should include the identity transformation.
I like that you mentioned the automorphisms and including the identity. I would be interested in seeing what a list of automorphisms looks like, even if it is just in a PM.
...
I don't think I would know if the solution grid was automorphic by rotation for example.
All I know is when swapping the columns and relabeling, results in the same band2 and band3.
Hi, I had hoped to hear back on band 1 automorphisms and how they are represented, but I went off and looked at on my own.
Originally was using a structure that I had to update anytime I swapped a row, band, column, stack or transposed. The output looked something like:
- Code: Select all
// TR Bnds Stks Bnd1 Bnd2 Bnd3 Stk1 Stk2 Stk3 Relabel
( 23, 123456789, 456789132, 789213654, 2, [
(.id ,.id ,.id ,.id ,.id ,.id ,.id ,.id ,.id ,123456789),
(.id ,.id ,.AB ,.AC ,.id ,.id ,.id ,.id ,.AC ,213789456)
]),
Here the columns are Transposition, Bands, Stacks, Band1, Band2, Band3, Stack1, Stack2, Stack3, Relabel.
Over time I got smarter about it and just created a rowMap, columnMap, and relabelMap using integers because it is easier to store in the code.
Now the same thing looks like:
- Code: Select all
{ 23, 123456789, 456789132, 789213654, 2, 34 },
...
(Reorder[]) { // 34
{ 123456789, 123456789, 123456789 },
{ 321456789, 456123987, 213789456 }
},
You can see they do the same thing.
So any of the 3,359,232 reordering can be represented using a rowMap and a ColumnMap. To document transposition I add a minus sign to the columnMap if it is transposed.
This is like an S9 group that has 9! permutations except it has the added restriction that the numbers 123, 456, and 789 each have move together cross bands and stacks.
The relabelMap is included because the 416 is deterministic so we always get the same relabels.
So now I never swap any data in the grid. I just de-reference it through the maps and do the swaps in the maps.
Each of the 416 has an automorphism count or AMC for short, and a reorder subgroup, which I think is what you are calling automorphisms.
So if the AMC = 1 then the subgroup is the identity transformation or reordering. The distribution or the AMC is:
- Code: Select all
AMC = [1: 279, 2: 106, 3: 2, 4: 1, 6: 18, 12: 2, 18: 6, 54: 1, 108: 1] = 416
So 279 of 416 are AMC 1 which means they are not automorphic.
There are 84 different subgroups that range from the trivial, AMC 1, to the redundent, AMC 108.
The last four 413, 414, 415, and 416 have unique subgroups and double in size if we include both cases for columns 8 and 9. They are never used because no grid ever uses them as the band 1 winner.
Using this knowledge, I created a C program, gridMinLex, that can convert wild grids to their gridMinLex at a rate of 150000 to 200000 grids/sec.
It returns the minLex grid and the reordering it took to get there. So for the six AMC 2 automorphic grids in the 49158 17 clue puzzles it returns two reorders.
I have analyzed the six automorphic grids from the 17 clue puzzle list using this code. Which I will present as a separate post.
I am pretty sure I can detect all grids that are automorphic by rotation and transposed. I will look at the set of all automorphic grids at some point.
My original analysis took 812 seconds or 13m 32s to read in 48159 minLex puzzles, solve them, grid minLex the results, then reorder the puzzles using grid minLex reordering, and report the results.
Now it takes 6.229s.
So is 200000 grids/sec. Is that fast?