def toCubieCube(self): from cubiecube import CubieCube ccRet = CubieCube() for i in xrange(8): ccRet.cp[i] = URF # invalidate corners for i in xrange(12): ccRet.ep[i] = UR # and edges for i in corner_values: # get the colors of the cubie at corner i, starting with U/D for ori in xrange(3): if (self.f[self.cornerFacelet[i][ori]] == U or self.f[self.cornerFacelet[i][ori]] == D): break col1 = self.f[self.cornerFacelet[i][(ori + 1) % 3]] col2 = self.f[self.cornerFacelet[i][(ori + 2) % 3]] for j in corner_values: if (col1 == self.cornerColor[j][1] and col2 == self.cornerColor[j][2]): # in cornerposition i we have cornercubie j ccRet.cp[i] = j ccRet.co[i] = ori % 3 break for i in edge_values: for j in edge_values: if (self.f[self.edgeFacelet[i][0]] == self.edgeColor[j][0] and self.f[self.edgeFacelet[i][1]] == self.edgeColor[j][1]): ccRet.ep[i] = j ccRet.eo[i] = 0 break if (self.f[self.edgeFacelet[i][0]] == self.edgeColor[j][1] and self.f[self.edgeFacelet[i][1]] == self.edgeColor[j][0]): ccRet.ep[i] = j ccRet.eo[i] = 1 break return ccRet
def randomCube(): """ Generates a random cube. @return A random cube in the string representation. Each cube of the cube space has the same probability. """ cc = CubieCube() cc.setFlip(random.randint(0, CoordCube.N_FLIP - 1)) cc.setTwist(random.randint(0, CoordCube.N_TWIST - 1)) while True: cc.setURFtoDLB(random.randint(0, CoordCube.N_URFtoDLB - 1)) cc.setURtoBR(random.randint(0, CoordCube.N_URtoBR - 1)) if (cc.edgeParity() ^ cc.cornerParity()) == 0: break fc = cc.toFaceCube() return fc.to_String()