############################################################### #hockeypuck.g GAP file # # The hockey puck puzzle is a mechanical puzzle sold at # http://look.net/hockeypuck/ # and has a few web pages devoted to it: # http://web.usna.navy.mil/~wdj/mball/puck.htm # and # http://www.geocities.com/jaapsch/puzzles/puck.htm # # Label the 24 pieces =1, -1, ..., +12, -12. # The rotation r sends # (1,-1,...,12,-12) to (12,-12,1,-1,...,11,-11). # The flip f1 sends # (1,-1,...,12,-12) to (-6,6,-5,5,-4,4,-3,3,-2,2,-1,1,7,-7,...,11,-11). # The flip f2 sends # (1,-1,...,12,-12) to (1,-1,-7,7,-6,6,...,-2,2,8,-8,...,12,-12). # In general, (performing permutations left-to-right) # fi=r^(i-1)*f1*r^(1-i). # # GAP does not allow actions on negative integers (??), # so we write # -1 <-> 13, # -2 <-> 14, # -3 <-> 15, # -4 <-> 16, # -5 <-> 17, # -6 <-> 18, # -7 <-> 19, # -8 <-> 20, # -9 <-> 21, # -10 <-> 22, # -11 <-> 23, # -12 <-> 24. #r:=(1,12,11,10,9,8,7,6,5,4,3,2)(-1,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2) r:=(1,12,11,10,9,8,7,6,5,4,3,2)(13,24,23,22,21,20,19,18,17,16,15,14); #f1:=(1,-6)(2,-5)(3,-4)(4,-3)(5,-2)(6,-1) f:=[]; f[1]:=(1,18)(2,17)(3,16)(4,15)(5,14)(6,13); for i in [2..12] do f[i]:=r^(i-1)*f[1]*r^(1-i); od; gens:=[]; Append(gens,[r]); Append(gens,f); puck:=Group(gens);