Exemple #1
0
    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
Exemple #2
0
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()