def rotate_ccw_test(self): ccw_sticker_mat = [] s00 = Sticker(FaceEnum.FRONT, OrientEnum.UP) s01 = Sticker(FaceEnum.RIGHT, OrientEnum.RIGHT) s02 = Sticker(FaceEnum.BACK, OrientEnum.DOWN) ccw_sticker_mat.append([s00, s01, s02]) s10 = Sticker(FaceEnum.LEFT, OrientEnum.LEFT) s11 = Sticker(FaceEnum.UP, OrientEnum.UP) s12 = Sticker(FaceEnum.DOWN, OrientEnum.RIGHT) ccw_sticker_mat.append([s10, s11, s12]) s20 = Sticker(FaceEnum.FRONT, OrientEnum.DOWN) s21 = Sticker(FaceEnum.RIGHT, OrientEnum.LEFT) s22 = Sticker(FaceEnum.BACK, OrientEnum.UP) ccw_sticker_mat.append([s20, s21, s22]) ccw_comp_face = Face(*N_and_flatten(ccw_sticker_mat)) sticker_mat = [] sticker_row = [s20, s10, s00] sticker_mat.append([deepcopy(s).rotate_cw() for s in sticker_row]) sticker_row = [s21, s11, s01] sticker_mat.append([deepcopy(s).rotate_cw() for s in sticker_row]) sticker_row = [s22, s12, s02] sticker_mat.append([deepcopy(s).rotate_cw() for s in sticker_row]) comp_face = Face(*N_and_flatten(sticker_mat)) assert (comp_face.rotate_ccw() == ccw_comp_face ), f"failed for {str(comp_face)}\n{repr(comp_face)}"
def gen_c2_minus_c4_faces_4(): stickers = [ [ Sticker(FaceEnum.BACK, OrientEnum.DOWN), Sticker(FaceEnum.FRONT, OrientEnum.UP), Sticker(FaceEnum.FRONT, OrientEnum.UP), Sticker(FaceEnum.BACK, OrientEnum.DOWN), ], [ Sticker(FaceEnum.BACK, OrientEnum.DOWN), Sticker(FaceEnum.FRONT, OrientEnum.UP), Sticker(FaceEnum.FRONT, OrientEnum.UP), Sticker(FaceEnum.BACK, OrientEnum.DOWN), ], [ Sticker(FaceEnum.BACK, OrientEnum.UP), Sticker(FaceEnum.FRONT, OrientEnum.DOWN), Sticker(FaceEnum.FRONT, OrientEnum.DOWN), Sticker(FaceEnum.BACK, OrientEnum.UP), ], [ Sticker(FaceEnum.BACK, OrientEnum.UP), Sticker(FaceEnum.FRONT, OrientEnum.DOWN), Sticker(FaceEnum.FRONT, OrientEnum.DOWN), Sticker(FaceEnum.BACK, OrientEnum.UP), ], ] return just(Face(4, flatten(stickers)))
def gen_orthogonal(n, i): sticker_matrix = [[ Sticker(FaceEnum.FRONT, OrientEnum.UP) for _ in range(n) ] for _ in range(i)] for _ in range(n - i): sticker_matrix.append( [Sticker(FaceEnum.BACK, OrientEnum.DOWN) for _ in range(n)]) return just(Face(n, flatten(sticker_matrix)))
def face(self, stickers): s1, s2, s3 = stickers cs = Sticker(FaceEnum.RIGHT, OrientEnum.LEFT) face_stickers = [] face_stickers.append([cs, s1, cs]) face_stickers.append([s1, s2, s3]) face_stickers.append([cs, s3, cs]) return Face(face_stickers)
def stickers_and_face(self): s1 = Sticker(FaceEnum.FRONT, OrientEnum.UP) s2 = Sticker(FaceEnum.BACK, OrientEnum.RIGHT) s3 = Sticker(FaceEnum.LEFT, OrientEnum.DOWN) stickers = [s1, s2, s3] cs = Sticker(FaceEnum.RIGHT, OrientEnum.LEFT) face_stickers = [] face_stickers.append([cs, s1, cs]) face_stickers.append([s1, s2, s3]) face_stickers.append([cs, s3, cs]) return stickers, Face(*N_and_flatten(face_stickers))
def front_face(self): sticker_matrix = [] for i in range(3): row = [Sticker(FaceEnum.FRONT, OrientEnum.UP) for _ in range(3)] sticker_matrix.append(row) return Face(*N_and_flatten(sticker_matrix))
def construction_test(self, sticker_matrix): Face(*N_and_flatten(sticker_matrix))
def face_from_sticker_matrix(sticker_matrix): return Face(*N_and_flatten(sticker_matrix))