fork download
  1. import time
  2. start = time.time()
  3.  
  4. algs = ["",
  5. "R' U R' U' R' U' R' U R U R2",
  6. "R U' R U R U R U' R' U' R2",
  7. "R2 U2 R U2 R2 U2 R2 U2 R U2 R2",
  8. "R2 U R2 U' R2 F2 R2 U' F2 U R2 F2",
  9. "R U' R F2 R' U R' U' R2 F2 R2",
  10. "R2 F2 R2 U R U' R F2 R' U R'",
  11. "R U R' U R' U' R F' R U R' U' R' F R2 U' R2 U R",
  12. "F' U2 R' U F U' F' U' R U' F",
  13. "R U R' F' R U R' U' R' F R2 U' R'",
  14. "R' U2 R U2 R' F R U R' U' R' F' R2",
  15. "F' R' U' R F' R' U F' U' F' U F R F2",
  16. "F2 R2 U' R' U' R F2 R' U R F2 U R2 F2",
  17. "F2 R2 U' F2 R' U' R F2 R' U R U R2 F2",
  18. "R' U' R2 U' R2 U' R U2 R2 F U R' U' R F' R",
  19. "R' F R' U R U' F' R2 U2 R' U R2 U R2 U R",
  20. "F' R U R' U' R' F R2 F U' R' U' R U F' R'",
  21. "R' U R' F R F' R U' R' F' U F R U R' U' R",
  22. "R U R' U' R' F R2 U' R' U' R U R' F'",
  23. "F R U' R' U' R U R' F' R U R' U' R' F R F'",
  24. "F' U2 F' U' R' F' R2 U' R' U R' F R U' F",
  25. "R U' R U F R F2 U F U' F R' F' R'"]
  26.  
  27. ##################################################
  28. class MyCube:
  29. """A virtual 3x3x3 matrix"""
  30. uSide = [] #URF, UF, etc
  31. fSide = [] #FRD, FD, etc
  32. lSide = [] #LFD, LD, etc
  33. bSide = [] #BRD, BD, etc
  34. rSide = [] #RBD, RD, etc
  35. dSide = [] #DBR, DR, etc
  36.  
  37. def __init__(self):
  38. self.uSide = ['U', 'U', 'U', 'U', 'U', 'U', 'U', 'U'] #URF, UF, etc
  39. self.fSide = ['F', 'F', 'F', 'F', 'F', 'F', 'F', 'F'] #FRD, FD, etc
  40. self.lSide = ['L', 'L', 'L', 'L', 'L', 'L', 'L', 'L'] #LFD, LD, etc
  41. self.bSide = ['B', 'B', 'B', 'B', 'B', 'B', 'B', 'B'] #BRD, BD, etc
  42. self.rSide = ['R', 'R', 'R', 'R', 'R', 'R', 'R', 'R'] #RBD, RD, etc
  43. self.dSide = ['D', 'D', 'D', 'D', 'D', 'D', 'D', 'D'] #DBR, DR, etc
  44.  
  45. def resetSelf(self, new):
  46. #print new
  47. MyCube.uSide = new[0]; MyCube.fSide = new[1]; MyCube.lSide = new[2]
  48. MyCube.bSide = new[3]; MyCube.rSide = new[4]; MyCube.dSide = new[5]
  49.  
  50.  
  51. def doU(self):
  52.  
  53. self.uSide[0], self.uSide[1], self.uSide[2], self.uSide[3], self.uSide[4], self.uSide[5], self.uSide[6], self.uSide[7] = self.uSide[6], self.uSide[7], self.uSide[0], self.uSide[1], self.uSide[2], self.uSide[3], self.uSide[4], self.uSide[5]
  54.  
  55. self.fSide[5], self.lSide[5], self.bSide[1], self.rSide[5] = self.rSide[5], self.fSide[5], self.lSide[5], self.bSide[1]
  56. self.fSide[6], self.lSide[6], self.bSide[2], self.rSide[6] = self.rSide[6], self.fSide[6], self.lSide[6], self.bSide[2]
  57. self.fSide[7], self.lSide[7], self.bSide[3], self.rSide[7] = self.rSide[7], self.fSide[7], self.lSide[7], self.bSide[3]
  58.  
  59. def doUp(self):
  60. self.uSide[6], self.uSide[7], self.uSide[0], self.uSide[1], self.uSide[2], self.uSide[3], self.uSide[4], self.uSide[5] = self.uSide[0], self.uSide[1], self.uSide[2], self.uSide[3], self.uSide[4], self.uSide[5], self.uSide[6], self.uSide[7]
  61.  
  62. self.rSide[5], self.fSide[5], self.lSide[5], self.bSide[1] = self.fSide[5], self.lSide[5], self.bSide[1], self.rSide[5]
  63. self.rSide[6], self.fSide[6], self.lSide[6], self.bSide[2] = self.fSide[6], self.lSide[6], self.bSide[2], self.rSide[6]
  64. self.rSide[7], self.fSide[7], self.lSide[7], self.bSide[3] = self.fSide[7], self.lSide[7], self.bSide[3], self.rSide[7]
  65.  
  66. def doR(self):
  67.  
  68. self.rSide[0], self.rSide[1], self.rSide[2], self.rSide[3], self.rSide[4], self.rSide[5], self.rSide[6], self.rSide[7] = self.rSide[6], self.rSide[7], self.rSide[0], self.rSide[1], self.rSide[2], self.rSide[3], self.rSide[4], self.rSide[5]
  69.  
  70. self.fSide[7], self.uSide[7], self.bSide[7], self.dSide[7] = self.dSide[7], self.fSide[7], self.uSide[7], self.bSide[7]
  71. self.fSide[0], self.uSide[0], self.bSide[0], self.dSide[0] = self.dSide[0], self.fSide[0], self.uSide[0], self.bSide[0]
  72. self.fSide[1], self.uSide[1], self.bSide[1], self.dSide[1] = self.dSide[1], self.fSide[1], self.uSide[1], self.bSide[1]
  73.  
  74. def doRp(self):
  75. self.rSide[6], self.rSide[7], self.rSide[0], self.rSide[1], self.rSide[2], self.rSide[3], self.rSide[4], self.rSide[5] = self.rSide[0], self.rSide[1], self.rSide[2], self.rSide[3], self.rSide[4], self.rSide[5], self.rSide[6], self.rSide[7]
  76.  
  77. self.dSide[7], self.fSide[7], self.uSide[7], self.bSide[7] = self.fSide[7], self.uSide[7], self.bSide[7], self.dSide[7]
  78. self.dSide[0], self.fSide[0], self.uSide[0], self.bSide[0] = self.fSide[0], self.uSide[0], self.bSide[0], self.dSide[0]
  79. self.dSide[1], self.fSide[1], self.uSide[1], self.bSide[1] = self.fSide[1], self.uSide[1], self.bSide[1], self.dSide[1]
  80.  
  81. def doF(self):
  82. self.fSide[0], self.fSide[1], self.fSide[2], self.fSide[3], self.fSide[4], self.fSide[5], self.fSide[6], self.fSide[7] = self.fSide[6], self.fSide[7], self.fSide[0], self.fSide[1], self.fSide[2], self.fSide[3], self.fSide[4], self.fSide[5]
  83.  
  84. self.uSide[1], self.rSide[3], self.dSide[5], self.lSide[7] = self.lSide[7], self.uSide[1], self.rSide[3], self.dSide[5]
  85. self.uSide[2], self.rSide[4], self.dSide[6], self.lSide[0] = self.lSide[0], self.uSide[2], self.rSide[4], self.dSide[6]
  86. self.uSide[3], self.rSide[5], self.dSide[7], self.lSide[1] = self.lSide[1], self.uSide[3], self.rSide[5], self.dSide[7]
  87.  
  88. def doFp(self):
  89. self.fSide[6], self.fSide[7], self.fSide[0], self.fSide[1], self.fSide[2], self.fSide[3], self.fSide[4], self.fSide[5] = self.fSide[0], self.fSide[1], self.fSide[2], self.fSide[3], self.fSide[4], self.fSide[5], self.fSide[6], self.fSide[7]
  90.  
  91. self.lSide[7], self.uSide[1], self.rSide[3], self.dSide[5] = self.uSide[1], self.rSide[3], self.dSide[5], self.lSide[7]
  92. self.lSide[0], self.uSide[2], self.rSide[4], self.dSide[6] = self.uSide[2], self.rSide[4], self.dSide[6], self.lSide[0]
  93. self.lSide[1], self.uSide[3], self.rSide[5], self.dSide[7] = self.uSide[3], self.rSide[5], self.dSide[7], self.lSide[1]
  94.  
  95. def doAlg(self, algString):
  96. ialg = algString.replace('(', '') #get rid of unwanted
  97. ialg = ialg.replace(')', '') # or otherwise unneeded characters
  98. ialg = ialg.replace("2'", '2') # incl. whitespace, paren., 2's
  99. ialg = ialg.replace(' ', ' ')
  100. parts = ialg.split(' ') #Divide the alg up into individual moves
  101.  
  102. parts.reverse()
  103.  
  104. for part in parts:
  105. if part == 'U': self.doUp()
  106. elif part == 'U2': self.doU(); self.doU()
  107. elif part == "U'": self.doU()
  108.  
  109. elif part == 'F': self.doFp()
  110. elif part == 'F2': self.doF(); self.doF()
  111. elif part == "F'": self.doF()
  112.  
  113. elif part == 'R': self.doRp()
  114. elif part == 'R2': self.doR(); self.doR()
  115. elif part == "R'": self.doR()
  116. ##################################################
  117. def doCrazy(self, a): #code generated with writing.py
  118. temp = self
  119.  
  120. if a == "": #default (finished) case:
  121. pass
  122.  
  123. elif a == "R' U R' U' R' U' R' U R U R2": #1
  124. temp.uSide[6] = self.uSide[0]; temp.uSide[1] = self.uSide[1]; temp.uSide[2] = self.uSide[2]; temp.uSide[3] = self.uSide[3]; temp.uSide[0] = self.uSide[4]; temp.uSide[5] = self.uSide[5]; temp.uSide[4] = self.uSide[6]; temp.uSide[7] = self.uSide[7]
  125.  
  126. temp.fSide[5] = self.fSide[5]; temp.fSide[6] = self.fSide[6]; temp.fSide[7] = self.fSide[7]
  127. temp.lSide[5] = self.lSide[5]; temp.rSide[6] = self.lSide[6]; temp.lSide[7] = self.lSide[7]
  128. temp.bSide[5] = self.bSide[5]; temp.bSide[6] = self.bSide[6]; temp.bSide[7] = self.bSide[7]
  129. temp.rSide[5] = self.rSide[5]; temp.bSide[2] = self.rSide[6]; temp.rSide[7] = self.rSide[7]
  130. self.resetSelf([temp.uSide, temp.fSide, temp.lSide, temp.bSide, temp.rSide, temp.dSide])
  131.  
  132. elif a == "R U' R U R U R U' R' U' R2": #2
  133. temp.uSide[2] = self.uSide[0]; temp.uSide[1] = self.uSide[1]; temp.uSide[4] = self.uSide[2]; temp.uSide[3] = self.uSide[3]; temp.uSide[0] = self.uSide[4]; temp.uSide[5] = self.uSide[5]; temp.uSide[6] = self.uSide[6]; temp.uSide[7] = self.uSide[7]
  134.  
  135. temp.fSide[5] = self.fSide[5]; temp.lSide[6] = self.fSide[6]; temp.fSide[7] = self.fSide[7]
  136. temp.lSide[5] = self.lSide[5]; temp.rSide[6] = self.lSide[6]; temp.lSide[7] = self.lSide[7]
  137. temp.bSide[5] = self.bSide[5]; temp.bSide[6] = self.bSide[6]; temp.bSide[7] = self.bSide[7]
  138. temp.rSide[5] = self.rSide[5]; temp.fSide[6] = self.rSide[6]; temp.rSide[7] = self.rSide[7]
  139. self.resetSelf([temp.uSide, temp.fSide, temp.lSide, temp.bSide, temp.rSide, temp.dSide])
  140.  
  141. elif a == "R2 U2 R U2 R2 U2 R2 U2 R U2 R2": #3
  142. temp.uSide[4] = self.uSide[0]; temp.uSide[1] = self.uSide[1]; temp.uSide[6] = self.uSide[2]; temp.uSide[3] = self.uSide[3]; temp.uSide[0] = self.uSide[4]; temp.uSide[5] = self.uSide[5]; temp.uSide[2] = self.uSide[6]; temp.uSide[7] = self.uSide[7]
  143.  
  144. temp.fSide[5] = self.fSide[5]; temp.bSide[2] = self.fSide[6]; temp.fSide[7] = self.fSide[7]
  145. temp.lSide[5] = self.lSide[5]; temp.rSide[6] = self.lSide[6]; temp.lSide[7] = self.lSide[7]
  146. temp.bSide[5] = self.bSide[5]; temp.bSide[6] = self.bSide[6]; temp.bSide[7] = self.bSide[7]
  147. temp.rSide[5] = self.rSide[5]; temp.lSide[6] = self.rSide[6]; temp.rSide[7] = self.rSide[7]
  148. self.resetSelf([temp.uSide, temp.fSide, temp.lSide, temp.bSide, temp.rSide, temp.dSide])
  149.  
  150. elif a == "R2 U R2 U' R2 F2 R2 U' F2 U R2 F2": #4
  151. temp.uSide[6] = self.uSide[0]; temp.uSide[1] = self.uSide[1]; temp.uSide[4] = self.uSide[2]; temp.uSide[3] = self.uSide[3]; temp.uSide[2] = self.uSide[4]; temp.uSide[5] = self.uSide[5]; temp.uSide[0] = self.uSide[6]; temp.uSide[7] = self.uSide[7]
  152.  
  153. temp.fSide[5] = self.fSide[5]; temp.lSide[6] = self.fSide[6]; temp.fSide[7] = self.fSide[7]
  154. temp.lSide[5] = self.lSide[5]; temp.fSide[6] = self.lSide[6]; temp.lSide[7] = self.lSide[7]
  155. temp.bSide[5] = self.bSide[5]; temp.bSide[6] = self.bSide[6]; temp.bSide[7] = self.bSide[7]
  156. temp.rSide[5] = self.rSide[5]; temp.bSide[2] = self.rSide[6]; temp.rSide[7] = self.rSide[7]
  157. self.resetSelf([temp.uSide, temp.fSide, temp.lSide, temp.bSide, temp.rSide, temp.dSide])
  158.  
  159. elif a == "R U' R F2 R' U R' U' R2 F2 R2": #5
  160. temp.uSide[2] = self.uSide[0]; temp.uSide[3] = self.uSide[1]; temp.uSide[4] = self.uSide[2]; temp.uSide[1] = self.uSide[3]; temp.uSide[6] = self.uSide[4]; temp.uSide[5] = self.uSide[5]; temp.uSide[0] = self.uSide[6]; temp.uSide[7] = self.uSide[7]
  161.  
  162. temp.rSide[5] = self.fSide[5]; temp.lSide[6] = self.fSide[6]; temp.lSide[7] = self.fSide[7]
  163. temp.lSide[5] = self.lSide[5]; temp.bSide[2] = self.lSide[6]; temp.fSide[7] = self.lSide[7]
  164. temp.bSide[5] = self.bSide[5]; temp.bSide[6] = self.bSide[6]; temp.bSide[7] = self.bSide[7]
  165. temp.fSide[5] = self.rSide[5]; temp.fSide[6] = self.rSide[6]; temp.rSide[7] = self.rSide[7]
  166. self.resetSelf([temp.uSide, temp.fSide, temp.lSide, temp.bSide, temp.rSide, temp.dSide])
  167.  
  168. elif a == "R2 F2 R2 U R U' R F2 R' U R'": #6
  169. temp.uSide[6] = self.uSide[0]; temp.uSide[3] = self.uSide[1]; temp.uSide[0] = self.uSide[2]; temp.uSide[1] = self.uSide[3]; temp.uSide[2] = self.uSide[4]; temp.uSide[5] = self.uSide[5]; temp.uSide[4] = self.uSide[6]; temp.uSide[7] = self.uSide[7]
  170.  
  171. temp.rSide[5] = self.fSide[5]; temp.rSide[6] = self.fSide[6]; temp.lSide[7] = self.fSide[7]
  172. temp.lSide[5] = self.lSide[5]; temp.fSide[6] = self.lSide[6]; temp.fSide[7] = self.lSide[7]
  173. temp.bSide[5] = self.bSide[5]; temp.bSide[6] = self.bSide[6]; temp.bSide[7] = self.bSide[7]
  174. temp.fSide[5] = self.rSide[5]; temp.bSide[2] = self.rSide[6]; temp.rSide[7] = self.rSide[7]
  175. self.resetSelf([temp.uSide, temp.fSide, temp.lSide, temp.bSide, temp.rSide, temp.dSide])
  176.  
  177. elif a == "R U R' U R' U' R F' R U R' U' R' F R2 U' R2 U R": #7
  178. temp.uSide[6] = self.uSide[0]; temp.uSide[1] = self.uSide[1]; temp.uSide[0] = self.uSide[2]; temp.uSide[7] = self.uSide[3]; temp.uSide[2] = self.uSide[4]; temp.uSide[5] = self.uSide[5]; temp.uSide[4] = self.uSide[6]; temp.uSide[3] = self.uSide[7]
  179.  
  180. temp.bSide[1] = self.fSide[5]; temp.rSide[6] = self.fSide[6]; temp.fSide[7] = self.fSide[7]
  181. temp.lSide[5] = self.lSide[5]; temp.fSide[6] = self.lSide[6]; temp.rSide[7] = self.lSide[7]
  182. temp.bSide[5] = self.bSide[5]; temp.bSide[6] = self.bSide[6]; temp.bSide[7] = self.bSide[7]
  183. temp.rSide[5] = self.rSide[5]; temp.bSide[2] = self.rSide[6]; temp.lSide[7] = self.rSide[7]
  184. self.resetSelf([temp.uSide, temp.fSide, temp.lSide, temp.bSide, temp.rSide, temp.dSide])
  185.  
  186. elif a == "F' U2 R' U F U' F' U' R U' F": #8
  187. temp.uSide[0] = self.uSide[0]; temp.uSide[1] = self.uSide[1]; temp.uSide[6] = self.uSide[2]; temp.uSide[7] = self.uSide[3]; temp.uSide[2] = self.uSide[4]; temp.uSide[3] = self.uSide[5]; temp.uSide[4] = self.uSide[6]; temp.uSide[5] = self.uSide[7]
  188.  
  189. temp.bSide[1] = self.fSide[5]; temp.bSide[2] = self.fSide[6]; temp.fSide[7] = self.fSide[7]
  190. temp.fSide[5] = self.lSide[5]; temp.fSide[6] = self.lSide[6]; temp.rSide[7] = self.lSide[7]
  191. temp.bSide[5] = self.bSide[5]; temp.bSide[6] = self.bSide[6]; temp.bSide[7] = self.bSide[7]
  192. temp.rSide[5] = self.rSide[5]; temp.rSide[6] = self.rSide[6]; temp.bSide[3] = self.rSide[7]
  193. self.resetSelf([temp.uSide, temp.fSide, temp.lSide, temp.bSide, temp.rSide, temp.dSide])
  194.  
  195. elif a == "R U R' F' R U R' U' R' F R2 U' R'": #9
  196. temp.uSide[6] = self.uSide[0]; temp.uSide[1] = self.uSide[1]; temp.uSide[2] = self.uSide[2]; temp.uSide[7] = self.uSide[3]; temp.uSide[0] = self.uSide[4]; temp.uSide[3] = self.uSide[5]; temp.uSide[4] = self.uSide[6]; temp.uSide[5] = self.uSide[7]
  197.  
  198. temp.bSide[1] = self.fSide[5]; temp.fSide[6] = self.fSide[6]; temp.fSide[7] = self.fSide[7]
  199. temp.fSide[5] = self.lSide[5]; temp.rSide[6] = self.lSide[6]; temp.rSide[7] = self.lSide[7]
  200. temp.bSide[5] = self.bSide[5]; temp.bSide[6] = self.bSide[6]; temp.bSide[7] = self.bSide[7]
  201. temp.rSide[5] = self.rSide[5]; temp.bSide[2] = self.rSide[6]; temp.bSide[3] = self.rSide[7]
  202. self.resetSelf([temp.uSide, temp.fSide, temp.lSide, temp.bSide, temp.rSide, temp.dSide])
  203.  
  204. elif a == "R' U2 R U2 R' F R U R' U' R' F' R2": #10
  205. temp.uSide[6] = self.uSide[0]; temp.uSide[5] = self.uSide[1]; temp.uSide[2] = self.uSide[2]; temp.uSide[1] = self.uSide[3]; temp.uSide[0] = self.uSide[4]; temp.uSide[3] = self.uSide[5]; temp.uSide[4] = self.uSide[6]; temp.uSide[7] = self.uSide[7]
  206.  
  207. temp.rSide[5] = self.fSide[5]; temp.fSide[6] = self.fSide[6]; temp.bSide[3] = self.fSide[7]
  208. temp.fSide[5] = self.lSide[5]; temp.rSide[6] = self.lSide[6]; temp.fSide[7] = self.lSide[7]
  209. temp.bSide[5] = self.bSide[5]; temp.bSide[6] = self.bSide[6]; temp.bSide[7] = self.bSide[7]
  210. temp.lSide[5] = self.rSide[5]; temp.bSide[2] = self.rSide[6]; temp.rSide[7] = self.rSide[7]
  211. self.resetSelf([temp.uSide, temp.fSide, temp.lSide, temp.bSide, temp.rSide, temp.dSide])
  212.  
  213. elif a == "F' R' U' R F' R' U F' U' F' U F R F2": #11
  214. temp.uSide[0] = self.uSide[0]; temp.uSide[1] = self.uSide[1]; temp.uSide[4] = self.uSide[2]; temp.uSide[3] = self.uSide[3]; temp.uSide[2] = self.uSide[4]; temp.uSide[7] = self.uSide[5]; temp.uSide[6] = self.uSide[6]; temp.uSide[5] = self.uSide[7]
  215.  
  216. temp.fSide[5] = self.fSide[5]; temp.lSide[6] = self.fSide[6]; temp.fSide[7] = self.fSide[7]
  217. temp.bSide[1] = self.lSide[5]; temp.fSide[6] = self.lSide[6]; temp.lSide[7] = self.lSide[7]
  218. temp.bSide[5] = self.bSide[5]; temp.bSide[6] = self.bSide[6]; temp.bSide[7] = self.bSide[7]
  219. temp.rSide[5] = self.rSide[5]; temp.rSide[6] = self.rSide[6]; temp.bSide[3] = self.rSide[7]
  220. self.resetSelf([temp.uSide, temp.fSide, temp.lSide, temp.bSide, temp.rSide, temp.dSide])
  221.  
  222. elif a == "F2 R2 U' R' U' R F2 R' U R F2 U R2 F2": #12
  223. temp.uSide[0] = self.uSide[0]; temp.uSide[1] = self.uSide[1]; temp.uSide[4] = self.uSide[2]; temp.uSide[7] = self.uSide[3]; temp.uSide[6] = self.uSide[4]; temp.uSide[3] = self.uSide[5]; temp.uSide[2] = self.uSide[6]; temp.uSide[5] = self.uSide[7]
  224.  
  225. temp.bSide[1] = self.fSide[5]; temp.lSide[6] = self.fSide[6]; temp.fSide[7] = self.fSide[7]
  226. temp.fSide[5] = self.lSide[5]; temp.bSide[2] = self.lSide[6]; temp.rSide[7] = self.lSide[7]
  227. temp.bSide[5] = self.bSide[5]; temp.bSide[6] = self.bSide[6]; temp.bSide[7] = self.bSide[7]
  228. temp.rSide[5] = self.rSide[5]; temp.rSide[6] = self.rSide[6]; temp.bSide[3] = self.rSide[7]
  229. self.resetSelf([temp.uSide, temp.fSide, temp.lSide, temp.bSide, temp.rSide, temp.dSide])
  230.  
  231. elif a == "F2 R2 U' F2 R' U' R F2 R' U R U R2 F2": #13
  232. temp.uSide[0] = self.uSide[0]; temp.uSide[1] = self.uSide[1]; temp.uSide[6] = self.uSide[2]; temp.uSide[5] = self.uSide[3]; temp.uSide[2] = self.uSide[4]; temp.uSide[7] = self.uSide[5]; temp.uSide[4] = self.uSide[6]; temp.uSide[3] = self.uSide[7]
  233.  
  234. temp.lSide[5] = self.fSide[5]; temp.bSide[2] = self.fSide[6]; temp.fSide[7] = self.fSide[7]
  235. temp.bSide[1] = self.lSide[5]; temp.fSide[6] = self.lSide[6]; temp.bSide[3] = self.lSide[7]
  236. temp.bSide[5] = self.bSide[5]; temp.bSide[6] = self.bSide[6]; temp.bSide[7] = self.bSide[7]
  237. temp.rSide[5] = self.rSide[5]; temp.rSide[6] = self.rSide[6]; temp.lSide[7] = self.rSide[7]
  238. self.resetSelf([temp.uSide, temp.fSide, temp.lSide, temp.bSide, temp.rSide, temp.dSide])
  239.  
  240. elif a == "R' U' R2 U' R2 U' R U2 R2 F U R' U' R F' R": #14
  241. temp.uSide[6] = self.uSide[0]; temp.uSide[1] = self.uSide[1]; temp.uSide[2] = self.uSide[2]; temp.uSide[5] = self.uSide[3]; temp.uSide[0] = self.uSide[4]; temp.uSide[7] = self.uSide[5]; temp.uSide[4] = self.uSide[6]; temp.uSide[3] = self.uSide[7]
  242.  
  243. temp.lSide[5] = self.fSide[5]; temp.fSide[6] = self.fSide[6]; temp.fSide[7] = self.fSide[7]
  244. temp.bSide[1] = self.lSide[5]; temp.rSide[6] = self.lSide[6]; temp.bSide[3] = self.lSide[7]
  245. temp.bSide[5] = self.bSide[5]; temp.bSide[6] = self.bSide[6]; temp.bSide[7] = self.bSide[7]
  246. temp.rSide[5] = self.rSide[5]; temp.bSide[2] = self.rSide[6]; temp.lSide[7] = self.rSide[7]
  247. self.resetSelf([temp.uSide, temp.fSide, temp.lSide, temp.bSide, temp.rSide, temp.dSide])
  248.  
  249. elif a == "R' F R' U R U' F' R2 U2 R' U R2 U R2 U R": #15
  250. temp.uSide[4] = self.uSide[0]; temp.uSide[1] = self.uSide[1]; temp.uSide[2] = self.uSide[2]; temp.uSide[7] = self.uSide[3]; temp.uSide[6] = self.uSide[4]; temp.uSide[3] = self.uSide[5]; temp.uSide[0] = self.uSide[6]; temp.uSide[5] = self.uSide[7]
  251.  
  252. temp.bSide[1] = self.fSide[5]; temp.fSide[6] = self.fSide[6]; temp.fSide[7] = self.fSide[7]
  253. temp.fSide[5] = self.lSide[5]; temp.bSide[2] = self.lSide[6]; temp.rSide[7] = self.lSide[7]
  254. temp.bSide[5] = self.bSide[5]; temp.bSide[6] = self.bSide[6]; temp.bSide[7] = self.bSide[7]
  255. temp.rSide[5] = self.rSide[5]; temp.lSide[6] = self.rSide[6]; temp.bSide[3] = self.rSide[7]
  256. self.resetSelf([temp.uSide, temp.fSide, temp.lSide, temp.bSide, temp.rSide, temp.dSide])
  257.  
  258. elif a == "F' R U R' U' R' F R2 F U' R' U' R U F' R'": #16
  259. temp.uSide[4] = self.uSide[0]; temp.uSide[1] = self.uSide[1]; temp.uSide[2] = self.uSide[2]; temp.uSide[7] = self.uSide[3]; temp.uSide[0] = self.uSide[4]; temp.uSide[5] = self.uSide[5]; temp.uSide[6] = self.uSide[6]; temp.uSide[3] = self.uSide[7]
  260.  
  261. temp.bSide[1] = self.fSide[5]; temp.fSide[6] = self.fSide[6]; temp.fSide[7] = self.fSide[7]
  262. temp.lSide[5] = self.lSide[5]; temp.rSide[6] = self.lSide[6]; temp.rSide[7] = self.lSide[7]
  263. temp.bSide[5] = self.bSide[5]; temp.bSide[6] = self.bSide[6]; temp.bSide[7] = self.bSide[7]
  264. temp.rSide[5] = self.rSide[5]; temp.lSide[6] = self.rSide[6]; temp.lSide[7] = self.rSide[7]
  265. self.resetSelf([temp.uSide, temp.fSide, temp.lSide, temp.bSide, temp.rSide, temp.dSide])
  266.  
  267. elif a == "R' U R' F R F' R U' R' F' U F R U R' U' R": #17
  268. temp.uSide[4] = self.uSide[0]; temp.uSide[5] = self.uSide[1]; temp.uSide[2] = self.uSide[2]; temp.uSide[3] = self.uSide[3]; temp.uSide[0] = self.uSide[4]; temp.uSide[1] = self.uSide[5]; temp.uSide[6] = self.uSide[6]; temp.uSide[7] = self.uSide[7]
  269.  
  270. temp.fSide[5] = self.fSide[5]; temp.fSide[6] = self.fSide[6]; temp.bSide[3] = self.fSide[7]
  271. temp.rSide[5] = self.lSide[5]; temp.rSide[6] = self.lSide[6]; temp.lSide[7] = self.lSide[7]
  272. temp.bSide[5] = self.bSide[5]; temp.bSide[6] = self.bSide[6]; temp.bSide[7] = self.bSide[7]
  273. temp.lSide[5] = self.rSide[5]; temp.lSide[6] = self.rSide[6]; temp.rSide[7] = self.rSide[7]
  274. self.resetSelf([temp.uSide, temp.fSide, temp.lSide, temp.bSide, temp.rSide, temp.dSide])
  275.  
  276. elif a == "R U R' U' R' F R2 U' R' U' R U R' F'": #18
  277. temp.uSide[4] = self.uSide[0]; temp.uSide[7] = self.uSide[1]; temp.uSide[2] = self.uSide[2]; temp.uSide[3] = self.uSide[3]; temp.uSide[0] = self.uSide[4]; temp.uSide[5] = self.uSide[5]; temp.uSide[6] = self.uSide[6]; temp.uSide[1] = self.uSide[7]
  278.  
  279. temp.fSide[5] = self.fSide[5]; temp.fSide[6] = self.fSide[6]; temp.rSide[7] = self.fSide[7]
  280. temp.lSide[5] = self.lSide[5]; temp.rSide[6] = self.lSide[6]; temp.lSide[7] = self.lSide[7]
  281. temp.bSide[5] = self.bSide[5]; temp.bSide[6] = self.bSide[6]; temp.bSide[7] = self.bSide[7]
  282. temp.bSide[1] = self.rSide[5]; temp.lSide[6] = self.rSide[6]; temp.fSide[7] = self.rSide[7]
  283. self.resetSelf([temp.uSide, temp.fSide, temp.lSide, temp.bSide, temp.rSide, temp.dSide])
  284.  
  285. elif a == "F R U' R' U' R U R' F' R U R' U' R' F R F'": #19
  286. temp.uSide[0] = self.uSide[0]; temp.uSide[5] = self.uSide[1]; temp.uSide[2] = self.uSide[2]; temp.uSide[3] = self.uSide[3]; temp.uSide[6] = self.uSide[4]; temp.uSide[1] = self.uSide[5]; temp.uSide[4] = self.uSide[6]; temp.uSide[7] = self.uSide[7]
  287.  
  288. temp.fSide[5] = self.fSide[5]; temp.fSide[6] = self.fSide[6]; temp.bSide[3] = self.fSide[7]
  289. temp.rSide[5] = self.lSide[5]; temp.bSide[2] = self.lSide[6]; temp.lSide[7] = self.lSide[7]
  290. temp.bSide[5] = self.bSide[5]; temp.bSide[6] = self.bSide[6]; temp.bSide[7] = self.bSide[7]
  291. temp.lSide[5] = self.rSide[5]; temp.rSide[6] = self.rSide[6]; temp.rSide[7] = self.rSide[7]
  292. self.resetSelf([temp.uSide, temp.fSide, temp.lSide, temp.bSide, temp.rSide, temp.dSide])
  293.  
  294. elif a == "F' U2 F' U' R' F' R2 U' R' U R' F R U' F": #20
  295. temp.uSide[0] = self.uSide[0]; temp.uSide[1] = self.uSide[1]; temp.uSide[6] = self.uSide[2]; temp.uSide[5] = self.uSide[3]; temp.uSide[4] = self.uSide[4]; temp.uSide[3] = self.uSide[5]; temp.uSide[2] = self.uSide[6]; temp.uSide[7] = self.uSide[7]
  296.  
  297. temp.lSide[5] = self.fSide[5]; temp.bSide[2] = self.fSide[6]; temp.fSide[7] = self.fSide[7]
  298. temp.fSide[5] = self.lSide[5]; temp.lSide[6] = self.lSide[6]; temp.bSide[3] = self.lSide[7]
  299. temp.bSide[5] = self.bSide[5]; temp.bSide[6] = self.bSide[6]; temp.bSide[7] = self.bSide[7]
  300. temp.rSide[5] = self.rSide[5]; temp.rSide[6] = self.rSide[6]; temp.rSide[7] = self.rSide[7]
  301. self.resetSelf([temp.uSide, temp.fSide, temp.lSide, temp.bSide, temp.rSide, temp.dSide])
  302.  
  303. elif a == "R U' R U F R F2 U F U' F R' F' R'": #21
  304. temp.uSide[2] = self.uSide[0]; temp.uSide[1] = self.uSide[1]; temp.uSide[0] = self.uSide[2]; temp.uSide[7] = self.uSide[3]; temp.uSide[4] = self.uSide[4]; temp.uSide[5] = self.uSide[5]; temp.uSide[6] = self.uSide[6]; temp.uSide[3] = self.uSide[7]
  305.  
  306. temp.bSide[1] = self.fSide[5]; temp.rSide[6] = self.fSide[6]; temp.fSide[7] = self.fSide[7]
  307. temp.lSide[5] = self.lSide[5]; temp.lSide[6] = self.lSide[6]; temp.rSide[7] = self.lSide[7]
  308. temp.bSide[5] = self.bSide[5]; temp.bSide[6] = self.bSide[6]; temp.bSide[7] = self.bSide[7]
  309. temp.rSide[5] = self.rSide[5]; temp.fSide[6] = self.rSide[6]; temp.lSide[7] = self.rSide[7]
  310. self.resetSelf([temp.uSide, temp.fSide, temp.lSide, temp.bSide, temp.rSide, temp.dSide])
  311.  
  312. else: print "BAD"
  313. ##################################################
  314.  
  315.  
  316.  
  317.  
  318.  
  319. def checkSolved(self):
  320. if self.uSide[0] == self.uSide[1] == self.uSide[2] == self.uSide[3] == self.uSide[4] == self.uSide[5] == self.uSide[6] == self.uSide[7]:
  321. if self.fSide[5] == self.fSide[6] == self.fSide[7]:
  322. if self.lSide[5] == self.lSide[6] == self.lSide[7]:
  323. if self.rSide[5] == self.rSide[6] == self.rSide[7]:
  324. if self.bSide[3] == self.bSide[2] == self.bSide[1]:
  325. return True
  326. return False
  327.  
  328. def printMin(self):
  329. print
  330.  
  331. print " ", self.bSide[3] + self.bSide[2] + self.bSide[1]# + '\n'
  332.  
  333. print " " + self.lSide[5], self.uSide[5] + self.uSide[6] + self.uSide[7], self.rSide[7]
  334. print " " + self.lSide[6], self.uSide[4] + "u" + self.uSide[0], self.rSide[6]
  335. print " " + self.lSide[7], self.uSide[3] + self.uSide[2] + self.uSide[1], self.rSide[5]# + '\n'#\n'
  336.  
  337. print " ", self.fSide[5] + self.fSide[6] + self.fSide[7] + '\n'
  338.  
  339. def doAlg(self, algString):
  340. ialg = algString.replace('(', '') #get rid of unwanted
  341. ialg = ialg.replace(')', '') # or otherwise unneeded characters
  342. ialg = ialg.replace("2'", '2') # incl. whitespace, paren., 2's
  343. ialg = ialg.replace(' ', ' ')
  344. parts = ialg.split(' ') #Divide the alg up into individual moves
  345.  
  346. parts.reverse()
  347.  
  348. for part in parts:
  349. if part == 'U': self.doU(); self.doU(); self.doU()
  350. elif part == 'U2': self.doU(); self.doU()
  351. elif part == "U'": self.doU()
  352.  
  353. elif part == 'F': self.doF(); self.doF(); self.doF()
  354. elif part == 'F2': self.doF(); self.doF()
  355. elif part == "F'": self.doF()
  356.  
  357. elif part == 'R': self.doR(); self.doR(); self.doR()
  358. elif part == 'R2': self.doR(); self.doR()
  359. elif part == "R'": self.doR()
  360. ##################################################
  361.  
  362. for alg in algs:
  363.  
  364. new = MyCube()
  365.  
  366. #new.doAlg(alg)
  367. new.doCrazy(alg)
  368.  
  369. new.printMin()
  370.  
Success #stdin #stdout 0.03s 8128KB
stdin
Standard input is empty
stdout
    BBB
  L UUU R
  L UuU R
  L UUU R
    FFF


    BLB
  L UUU R
  L UuU L
  L UUU R
    FFF


    BBB
  L UUU R
  F UuU F
  L UUU R
    FFF


    BFB
  L UUU R
  L UuU L
  L UUU R
    FFF


    BRB
  L UUU R
  F UuU R
  L UUU R
    FFF


    BFB
  L UUU R
  F UuU R
  F UUU F
    FRF


    BFB
  L UUU R
  L UuU F
  F UUU F
    FLF


    BFF
  L UUU L
  L UuU F
  L UUU R
    FLF


    LFF
  L UUU L
  L UuU R
  L UUU R
    LLF


    LLF
  L UUU L
  L UuU L
  L UUU R
    LFF


    FLB
  F UUU R
  L UuU L
  L UUU F
    LFL


    RBL
  L UUU R
  F UuU R
  L UUU R
    FFF


    LFF
  L UUU L
  F UuU R
  L UUU R
    LFF


    LFF
  F UUU R
  L UuU R
  R UUU R
    FLF


    LLF
  F UUU R
  L UuU L
  R UUU R
    FFF


    LLF
  L UUU L
  R UuU R
  L UUU R
    LFF


    BBF
  L UUU L
  L UuU L
  L UUU R
    FFF


    FBB
  L UUU R
  L UuU L
  L UUU L
    FFF


    BBR
  L UUU F
  L UuU L
  L UUU R
    FFF


    FLB
  L UUU R
  L UuU R
  L UUU L
    FFF


    LFB
  F UUU R
  L UuU R
  L UUU R
    FFF


    BBF
  L UUU L
  L UuU F
  L UUU R
    FFF