by B.J. Benesh, D.C. Ernst, N. Sieben
GAP function to check if all maximal subgroups are even:
allEvenMaximals:=function(G) return ForAll(MaximalSubgroupClassReps(G),M->(0=Order(M) mod 2)); end;
GAP function to check if the even maximal subgroups cover the group:
evenMaximalsCover:=function(G) local EE,g,cl; EE:=Filtered(MaximalSubgroups(G),S -> 0=(Order(S) mod 2)); cl:=List(ConjugacyClasses(G),Representative); for g in cl do if not ForAny(EE,E -> (g in E) ) then return false; fi; od; return true; end;
GAP function to compute the nim-number of DNG():
nim:=function(G) local F, GF; if Order(G)=2 then return 1; fi; if 1=(Order(G) mod 2) then return 1; fi; if allEvenMaximals(G) then return 0; fi; F:=FrattiniSubgroup(G); if 0=(Order(F) mod 2) then return 0; fi; GF:=FactorGroup(G,F); if evenMaximalsCover(GF) then return 0; fi; return 3; end;
Definitions for the Rubik's cubes:
2cube := Group( ( 1, 3, 8, 6)( 9,33,25,17)(11,35,27,19), ( 9,11,16,14)( 1,17,41,40)( 6,22,46,35), (17,19,24,22)( 6,25,43,16)( 8,30,41,11) ); 3cube := Group( ( 1, 3, 8, 6)( 2, 5, 7, 4)( 9,33,25,17)(10,34,26,18)(11,35,27,19), ( 9,11,16,14)(10,13,15,12)( 1,17,41,40)( 4,20,44,37)( 6,22,46,35), (17,19,24,22)(18,21,23,20)( 6,25,43,16)( 7,28,42,13)( 8,30,41,11), (25,27,32,30)(26,29,31,28)( 3,38,43,19)( 5,36,45,21)( 8,33,48,24), (33,35,40,38)(34,37,39,36)( 3, 9,46,32)( 2,12,47,29)( 1,14,48,27), (41,43,48,46)(42,45,47,44)(14,22,30,38)(15,23,31,39)(16,24,32,40) );