Changeset 7704:cc266bca98b4
- Timestamp:
- 11/28/07 10:49:15 (5 years ago)
- Branch:
- default
- File:
-
- 1 edited
-
sage/groups/perm_gps/cubegroup.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
sage/groups/perm_gps/cubegroup.py
r7703 r7704 615 615 self.__gens = [B,D,F,L,R,U] 616 616 self._group = PermutationGroup([B,D,F,L,R,U]) 617 #H = SymmetricGroup(48)618 #PermutationGroup_subgroup(H,self.__gens) #### very slow..619 self._group620 617 621 618 def gen_names(self): 622 619 return ['B','D','F','L','R','U'] 623 620 624 621 def __str__(self): 625 return "The Rubik's cube group with genrators R,L,F,B,U,D in SymmetricGroup(48)."622 return "The Rubik's cube group with genrators R,L,F,B,U,D in SymmetricGroup(48)." 626 623 627 624 def __repr__(self): 628 return "The PermutationGroup of all legal moves of the Rubik's cube."629 625 return "The PermutationGroup of all legal moves of the Rubik's cube." 626 630 627 def __call__(self, mv): 631 """632 EXAMPLES:633 sage: rubik = CubeGroup()628 """ 629 EXAMPLES: 630 sage: rubik = CubeGroup() 634 631 sage: rubik(1) 635 632 () 636 """637 return self.parse(mv)633 """ 634 return self.parse(mv) 638 635 639 636 def group(self): … … 645 642 def B(self): 646 643 G = self.group() 647 g = G(self.gens()[0])644 g = G(self.gens()[0]) 648 645 return g 649 646 650 647 def D(self): 651 G = self.group()652 g = G(self.gens()[1])648 G = self.group() 649 g = G(self.gens()[1]) 653 650 return g 654 651 655 652 def F(self): 656 653 G = self.group() 657 g = G(self.gens()[2])654 g = G(self.gens()[2]) 658 655 return g 659 656 660 657 def L(self): 661 658 G = self.group() 662 g = G(self.gens()[3])659 g = G(self.gens()[3]) 663 660 return g 664 661 665 662 def R(self): 666 663 G = self.group() 667 g = G(self.gens()[4])664 g = G(self.gens()[4]) 668 665 return g 669 666 670 667 def U(self): 671 668 G = self.group() 672 g = G(self.gens()[5])669 g = G(self.gens()[5]) 673 670 return g 674 671 … … 807 804 r""" 808 805 Returns the group element and the reordered list of facets, as moved by 809 the list mv (read left-to-right) 810 811 INPUT: mv is a string of the form X^a*Y^b*...", 812 where X, Y, ... are in {R,L,F,B,U,D} 813 and a,b, ... are integers. 814 815 EXAMPLES: 816 sage: rubik = CubeGroup() 817 sage: rubik.move("")[0] 818 () 819 sage: rubik.move("R")[0] 820 (3,38,43,19)(5,36,45,21)(8,33,48,24)(25,27,32,30)(26,29,31,28) 821 sage: rubik.R() 822 (3,38,43,19)(5,36,45,21)(8,33,48,24)(25,27,32,30)(26,29,31,28) 823 824 """ 825 g = self.parse(mv) 826 return g, self.facets(g) 827 828 mv = mv.strip().replace(" ","*").replace("**", "*").replace("'", "^(-1)") 829 m = mv.split("*") 830 M = [x.split("^") for x in m] 831 #print M 832 n = len(M) 833 e = 0 834 G = self.group() 835 R,L,F,B,U,D = G.gens() 836 g = G(1) 837 fcts = self.facets() 838 for i in range(n): 839 if len(M[i])==1: 840 M[i] = [M[i][0],"1"] 841 #print M 842 for i in range(n): 843 x = M[i][0] 844 if x == "R": h = self.R() 845 elif x == "L": h = self.L() 846 elif x == "U": h = self.U() 847 elif x == "D": h = self.D() 848 elif x == "F": h = self.F() 849 elif x == "B": h = self.B() 850 else: h = G(1) 851 e = M[i][1] 852 if e=="1": g = g*h 853 if e=="2": g = g*h*h 854 if e=="3": g = g*h*h*h 855 if e=="(-1)": g = g*h*h*h 856 pos = [g(i) for i in fcts] 857 return [g,pos] 858 806 the list mv (read left-to-right) 807 808 INPUT: mv is a string of the form X^a*Y^b*...", 809 where X, Y, ... are in {R,L,F,B,U,D} 810 and a,b, ... are integers. 811 812 EXAMPLES: 813 sage: rubik = CubeGroup() 814 sage: rubik.move("")[0] 815 () 816 sage: rubik.move("R")[0] 817 (3,38,43,19)(5,36,45,21)(8,33,48,24)(25,27,32,30)(26,29,31,28) 818 sage: rubik.R() 819 (3,38,43,19)(5,36,45,21)(8,33,48,24)(25,27,32,30)(26,29,31,28) 820 821 """ 822 g = self.parse(mv) 823 return g, self.facets(g) 824 859 825 def display2d(self,mv): 860 826 print self.repr2d(mv)
Note: See TracChangeset
for help on using the changeset viewer.
