blue wrote:How come his feet aren't where his head should be, and vica-versa ?
His feet could be in his mouth, like mine usually are
blue wrote:How come his feet aren't where his head should be, and vica-versa ?
Mathimagics wrote:.
Some observations that might be useful in the search for proofiness (not to be confused with "truthiness").
Consider the case of simple Latin Squares of order N (note, not N^2). The order of the symmetry group LG(N) is (N! ^ 2 * 2).
Now that we have one less "dimension" (no bands), it is not surprising that we find these groups can be generated by just 2 permutations {x, y}.
This SG2-style generator seems to do the job (although note that it is sensitive to the parity of N):
- x = ShiftR(N-1) for odd N
- x = ShiftR(N-2) for even N
- y = Rotate 90
Interestingly, I can't seem to find an equivalent SG1-style generator, ie. any {x, y} with y = flip.
blue wrote:This, seems to work for all N >= 2 ... checked for N=2,...,40:
- x = ShiftR(N) + ShiftC(N-1)
- y = Flip
blue wrote:For N=2, ShiftR(0) doesn't make sense ...
Mathimagics wrote:Unless you accept that Shift(0) = Shift(1) = ()
gap> cycle := function(N,n) return Concatenation([2..n],[1],[n+1..N]); end;;
gap> cycle(3,1);
[ 1, 2, 3 ]
gap> cycle(3,2);
[ 2, 1, 3 ]
gap> cycle(3,3);
[ 2, 3, 1 ]
gap> cycle(3,0);
[ 1, 1, 2, 3 ]
gap> PermList(cycle(3,1));
()
gap> PermList(cycle(3,2));
(1,2)
gap> PermList(cycle(3,3));
(1,2,3)
gap> PermList(cycle(3,0));
fail
gap>
cycle := function(N,n) if (n < 2) then n := 1; fi; return Concatenation([2..n],[1],[n+1..N]); end;;
Transpose (aka flip) IS a diagonal reflection (main diagonal).
Rotate quarter turn is different.
None of the individual operations are quarter turns, but ...
"1 -> 2 -> 3" gives a CW quarter turn (overall), and "2 -> 3 -> 4" gives a CCW quarter turn.
blue wrote:Similarly, for Sudoku, this seems to work:Checked for N=2,...,10 with GAP.
- x = ShiftR(N) + ShiftC(N-1)
- y = ShiftB(N) + ShiftS(N-1)
- z = Flip
Added: It's easy to prove that these work for all N, too.
1) Flip = z
2) ShiftR(N)^(-1) = x^(N-1)
3) ShiftR(N-1) = z*x^N*z
4) ShiftB(N)^(-1) = y^(N-1)
5) ShiftB(N-1) = z*y^N*z
6) ShiftR(N) = x^((N-1)*(N-1)) ... from (2) and (x^(N*(N-1)) = 1)
7) ShiftB(N) = y^((N-1)*(N-1)) ... from (3) and (x^(N*(N-1)) = 1)
SwapR(1,N) = ShiftR(N-1) + ShiftR(N)^(-1) ... swaps rows 1 & N
SwapB(1,N) = ShiftB(N-1) + ShiftB(N)^(-1) ... swaps bands 1 & N
SwapR(r,r+1) = ShiftR(N)^r + SwapR(1,N) + ShiftR(N)^(-r)
SwapB(b,b+1) = ShiftB(N)^b + SwapB(1,N) + ShiftB(N)^(-b)
SwapC(c,c+1) = Flip + SwapR(c,c+1) + Flip
SwapS(s,s+1) = Flip + SwapB(s,s+1) + Flip
SwapBandRows(1 ,r,r+1) = SwapR(r,r+1)
SwapBandRows(1+b,r,r+1) = ShiftB(N)^b + SwapR(r,r+1) + ShiftR(N)^(-b)
SwapStackColumns(1 ,c,c+1) = Flip + SwapBandRows(1 ,c,c+1) + Flip
SwapStackColumns(1+s,c,c+1) = Flip + SwapBandRows(1+s,c,c+1) + Flip