ronk wrote:gsf wrote:first determine the cyclic permutation from the "minimal" puzzle (isomorphic to the original)
- Code: Select all
g -p ...6..3.7...12.6.5.........2.7.4.9.......3.1.5.4...........9.4.6.5......8.2.7....
which produces
- Code: Select all
r(149)(267)(358)c(168259347)
Does that mean r1 is replaced by r4, etc. ... or is r4 replaced by r1, etc. Given that mathematical assignment is almost unversally expressed ... assign right-side-value to left-side-variable, I would hope it's ...
tmp = r1; r1 = r4; r4 = r9; r9 = tmp;
... not that it makes any difference if your program is the only one to "read" the output.
good question ronk
first, the parenthesized parts are not my notation: wiki (so it does make a difference)
that's a beautiful concise notation, and the best part is someone else did the hard part (defining it in mathematic terms)
the sudokuized parts (r c v i x a) are mine:
r: row permutations
c: colum permutations
v: cell value permutations
i: identity (when all permutations are the identity)
x: transpose (row-col transposition)
a: number of non-trivial automorphisms (fallout from the underlying algorithm)
so its implemented equivalent to the assignment with the tmp var
note on the solver: for -p it now requires at least two input puzzles
its also possible that that post referred to the old canonical form
here is an updated example
- Code: Select all
sudoku -p 100406700050000030000207000000904600000802000070000010306000008000000000802000405 ...6..3.7...12.6.5.........2.7.4.9.......3.1.5.4...........9.4.6.5......8.2.7....
which results in these permutations
- Code: Select all
v(19867425)r(149258367)c(175286394)
you can then apply the permutation to map the first puzzle to the second
- Code: Select all
sudoku -p'v(19867425)r(149258367)c(175286394)' 100406700050000030000207000000904600000802000070000010306000008000000000802000405
not very useful in this example
but you may have a collection of equivalent puzzles or templates/exemplars that need to be transformed using the same permutation