# /usr/bin/node /home/cubeman/prog/cubing.js-special/dist/bin/puzzle-geometry-bin.js --ksolve --optimize --gap --moves U,D,L,R,F,B,2F,2U,2R 3x3x3 # PuzzleGeometry 0.1 Copyright 2018 Tomas Rokicki. # c f 0.333333333333333 optimize true movelist U,D,L,R,F,B,2F,2U,2R # 1 to 6 are centres # 7 to 30 are edges # 31 to 54 are corners M_FN:=(7,26,15,10)(8,25,16,9)(31,50,40,35)(32,51,41,36)(33,49,42,34); M_BN:=(11,18,19,28)(12,17,20,27)(37,45,52,48)(38,43,53,46)(39,44,54,47); M_2FN:=(2,6,5,3)(13,22,29,24)(14,21,30,23); M_UN:=(21,27,29,25)(22,28,30,26)(31,37,46,49)(32,38,47,50)(33,39,48,51); M_DN:=(9,23,17,13)(10,24,18,14)(34,40,52,43)(35,41,53,44)(36,42,54,45); M_2DN:=(1,5,4,2)(7,16,19,12)(8,15,20,11); M_LN:=(15,29,19,23)(16,30,20,24)(40,51,46,54)(41,49,47,52)(42,50,48,53); M_RN:=(7,13,11,21)(8,14,12,22)(31,36,43,39)(32,34,44,37)(33,35,45,38); M_2LN:=(1,6,4,3)(9,26,27,18)(10,25,28,17); ip:=[[1],[2],[3],[4],[5],[6],[7],[9],[11],[13],[15],[17],[19],[21],[23],[25],[27],[29],[31],[34],[37],[40],[43],[46],[49],[52]]; F := M_FN ^-1; B := M_BN ^-1; L := M_LN ^-1; R := M_RN ^-1; U := M_UN ^-1; D := M_DN ^-1; U2 := U^2; D2 := D^2; L2 := L^2; R2 := R^2; F2 := F^2; B2 := B^2; F3 := F^-1; R3 := R^-1; U3 := U^-1; 2F := M_2FN ^-1; 2D := M_2DN ^-1; 2L := M_2LN ^-1; 2F2 := 2F^2; 2D2 := 2D^2; 2L2 := 2L^2; Gen:=[ F,B,L,R,U,D ]; sq :=[ F^2, B^2, L^2, R^2, U^2, D^2 ]; sq_group := Group(F^2, B^2, L^2, R^2, U^2, D^2); full_group := Group (2F,2D,2L,U,D,F,B,L,R); Rot_F := 2F * F * B^-1; Rot_L := 2L * L * R^-1; Rot_D := 2D * D * D^-1; Fv := Rot_F; Lv := Rot_L; Dv := Rot_D; test_group := Group (U,D,F,B,L,R); # 6xo3 in # 6xo3 in # 6xo3 in 6xo3 := R^2 * L^-1 * D * F^2 * R^-1 * D^-1 * F * B^-1 * U * D^-1 * F * L * D^2 * F^-1 * R * L^2; 6xo6 := (F^1*R^1*L^3*U^2*F^2*B^2*U^3*D^3*F^1*B^3*L^3*U^1*R^2*L^2*U^2*F^2*B^2*D^1); 2xo2 := D^2 * F^2 * U^2 * F^2 * B^2 * U^2 * F^2 * U^2; 6xo6 := F^1*R^1*L^3*U^2*F^2*B^2*U^3*D^3*F^1*B^3*L^3*U^1*R^2*L^2*U^2*F^2*B^2*D^1; moves_6xo3 := "R^2 * L^-1 * D * F^2 * R^-1 * D^-1 * F * B^-1 * U * D^-1 * F * L * D^2 * F^-1 * R * L^2"; test1 := 6xo6 * ((D2 * L2)^3 * Fv^-1 * Dv)^2; test_group := Group(2D,R,2F2,U,2L2); rot_group := Group(Fv, Dv); total_group_x := Group (6xo3, 2xo2); # compute EdgesList directly from your known 6xo3 permutation points := [1..54]; # (assumes 6xo3 is already defined as a GAP permutation in your session) Moved := Set(MovedPoints(6xo3)); # all points that 6xo3 moves Print("MovedPoints(6xo3) has length: ", Length(Moved), "\n"); Print("MovedPoints(6xo3) = ", Moved, "\n"); # sanity check: should be 24 if Length(Moved) <> 24 then Error("MovedPoints(6xo3) is not length 24 - check 6xo3 definition!"); fi; EdgesList := Moved; # use this in the search routine mark4 := U^3*B^3*R^3*U^1*F^3*U^1*D^3*L^1*U^3*F^1*R^3*U^1*R^2*L^2*D^3*L^2*D^1; test1 := Group(U,2L,2F,2D); mark14 := U^3*R^2*U^1*R^2*B^3*L^3*U^3*R^2*L^2*D^1*L^1*F^3*R^2*U^3*B^2*D^1;