def __init__(self, parent):

        LookupTable.__init__(self,
                             parent,
                             'lookup-table-4x4x4-step202-LR-centers-solve.txt',
                             'xxxxLLLLxxxxRRRRxxxxxxxx',
                             linecount=51482970)
    def __init__(self, parent):

        LookupTable.__init__(self,
                             parent,
                             'lookup-table-4x4x4-step201-UD-centers-solve.txt',
                             'UUUUxxxxxxxxxxxxxxxxDDDD',
                             linecount=51482970)
    def __init__(self, parent):

        LookupTable.__init__(self,
                             parent,
                             'lookup-table-4x4x4-step203-FB-centers-solve.txt',
                             'xxxxxxxxFFFFxxxxBBBBxxxx',
                             linecount=51482970)
 def __init__(self, parent):
     LookupTable.__init__(
         self,
         parent,
         'lookup-table-4x4x4-step30-ULFRBD-centers-solve.txt',
         'UUUULLLLFFFFRRRRBBBBDDDD',
         linecount=2058000)
예제 #5
0
 def __init__(self, parent):
     LookupTable.__init__(
         self,
         parent,
         "lookup-table-4x4x4-step20-highlow-edges.txt",
         (
             "LLLLRRRRUDDUUDDUDUDUUDUDDUUDDUUDDUDUUDUDDUUDDUUDUDDUUDDU",
             "LLRRLLRRUDDUUDDUDUDUUDUDDUUDDUUDDUDUUDUDDUUDDUUDUDDUUDDU",
             "LLRRRRLLUDDUUDDUDUDUUDUDDUUDDUUDDUDUUDUDDUUDDUUDUDDUUDDU",
             "LRLRLRLRUDDUUDDUDUDUUDUDDUUDDUUDDUDUUDUDDUUDDUUDUDDUUDDU",
             "LRLRRLRLUDDUUDDUDUDUUDUDDUUDDUUDDUDUUDUDDUUDDUUDUDDUUDDU",
             "LRRLRLLRUDDUUDDUDUDUUDUDDUUDDUUDDUDUUDUDDUUDDUUDUDDUUDDU",
             "RLLRLRRLUDDUUDDUDUDUUDUDDUUDDUUDDUDUUDUDDUUDDUUDUDDUUDDU",
             "RLRLLRLRUDDUUDDUDUDUUDUDDUUDDUUDDUDUUDUDDUUDDUUDUDDUUDDU",
             "RLRLRLRLUDDUUDDUDUDUUDUDDUUDDUUDDUDUUDUDDUUDDUUDUDDUUDDU",
             "RRLLLLRRUDDUUDDUDUDUUDUDDUUDDUUDDUDUUDUDDUUDDUUDUDDUUDDU",
             "RRLLRRLLUDDUUDDUDUDUUDUDDUUDDUUDDUDUUDUDDUUDDUUDUDDUUDDU",
             "RRRRLLLLUDDUUDDUDUDUUDUDDUUDDUUDDUDUUDUDDUUDDUUDUDDUUDDU",
         ),
         all_moves=moves_444,
         legal_moves=("Uw", "Uw'", "Dw", "Dw'", "Fw", "Fw'", "Bw", "Bw'", "Lw", "Lw'", "Rw", "Rw'"),
         linecount=2304998,
         max_depth=6,
         filesize=182094842,
     )
    def __init__(self, parent):

        LookupTable.__init__(self,
                             parent,
                             'lookup-table-4x4x4-step11-UD-centers-stage.txt',
                             'f0000f',
                             linecount=735471)
    def __init__(
        self,
        parent,
        filename,
        state_target,
        moves_all,
        moves_illegal,
        linecount,
        max_depth=None,
        filesize=None,
        legal_moves=[],
        prune_tables=[],
    ):
        LookupTable.__init__(self, parent, filename, state_target, linecount, max_depth, filesize)
        self.ida_nodes = {}
        self.recolor_positions = []
        self.recolor_map = {}
        self.nuke_corners = False
        self.nuke_edges = False
        self.nuke_centers = False
        self.min_edge_paired_count = 0
        self.prune_tables = prune_tables

        for x in moves_illegal:
            if x not in moves_all:
                raise Exception("illegal move %s is not in the list of legal moves" % x)

        if legal_moves:
            self.moves_all = list(legal_moves)
        else:
            self.moves_all = []

            for x in moves_all:
                if x not in moves_illegal:
                    self.moves_all.append(x)

        log.info("%s: moves_all %s" % (self, ",".join(self.moves_all)))
        self.step_index = {}
        for (index, step) in enumerate(self.moves_all):
            self.step_index[step] = index

        COST_LENGTH = 1
        STATE_INDEX_LENGTH = 4
        self.ROW_LENGTH = COST_LENGTH + (STATE_INDEX_LENGTH * len(self.moves_all))

        # Cache the results of steps_on_same_face_and_layer() for all
        # combinations of moves we will see while searching.
        self.steps_on_same_face_and_layer_cache = {}
        self.steps_not_on_same_face_and_layer = {}

        for step1 in self.moves_all + [None]:
            for step2 in self.moves_all:
                if steps_on_same_face_and_layer(step1, step2):
                    self.steps_on_same_face_and_layer_cache[(step1, step2)] = True
                else:
                    self.steps_on_same_face_and_layer_cache[(step1, step2)] = False

                    if step1 not in self.steps_not_on_same_face_and_layer:
                        self.steps_not_on_same_face_and_layer[step1] = []
                    self.steps_not_on_same_face_and_layer[step1].append(step2)
예제 #8
0
 def __init__(self, parent):
     LookupTable.__init__(self,
                          parent,
                          'lookup-table-3x3x3-step11-edges.txt',
                          'UUUULLLLFFFFRRRRBBBBDDDD',
                          linecount=967680,
                          max_depth=12)
예제 #9
0
 def __init__(self, parent):
     LookupTable.__init__(self,
                          parent,
                          'lookup-table-3x3x3-step12-corners.txt',
                          'UUUULLLLFFFFRRRRBBBBDDDD',
                          linecount=40320,
                          max_depth=13)
예제 #10
0
 def __init__(self, parent):
     LookupTable.__init__(self,
                          parent,
                          'lookup-table-4x4x4-step50-tsai-phase1.txt',
                          '0f0f00',
                          linecount=735471,
                          max_depth=8)
예제 #11
0
 def __init__(self, parent):
     LookupTable.__init__(
         self,
         parent,
         'lookup-table-4x4x4-step72-tsai-phase3-centers.txt',
         'UUUULLLLFFFFRRRRBBBBDDDD',
         linecount=58800)
 def __init__(self, parent):
     LookupTable.__init__(
         self,
         parent,
         'lookup-table-5x5x5-step101-stage-second-four-edges.txt',
         'TBD',
         linecount=338122,
         filesize=28740370)
예제 #13
0
    def __init__(
        self,
        parent,
        filename=None,
        all_moves=[],
        illegal_moves=[],
        state_target=None,
        linecount=None,
        max_depth=None,
        filesize=None,
        legal_moves=[],
        prune_tables=[],
        multiplier=None,
        main_table_state_length=None,
        main_table_max_depth=None,
        main_table_prune_tables=None,
        perfect_hash_filename=None,
        pt2_state_max=None,
        multiple_solutions=False,

    ):
        LookupTable.__init__(self, parent, filename, state_target, linecount, max_depth, filesize)
        self.recolor_positions = []
        self.recolor_map = {}
        self.nuke_corners = False
        self.nuke_edges = False
        self.nuke_centers = False
        self.prune_tables = prune_tables
        self.multiplier = multiplier
        self.main_table_state_length = main_table_state_length
        self.main_table_max_depth = main_table_max_depth
        self.main_table_prune_tables = main_table_prune_tables
        self.perfect_hash_filename = perfect_hash_filename
        self.pt2_state_max = pt2_state_max
        self.max_ida_threshold = None
        self.multiple_solutions = multiple_solutions

        if self.perfect_hash_filename or self.pt2_state_max:
            assert self.perfect_hash_filename and self.pt2_state_max, "both perfect_hash_filename and pt2_state_max must be specified"
            download_file_if_needed(self.perfect_hash_filename, self.parent.size)

        if legal_moves:
            self.all_moves = list(legal_moves)
        else:
            for x in illegal_moves:
                if x not in all_moves:
                    raise Exception("illegal move %s is not in the list of legal moves" % x)

            self.all_moves = []

            for x in all_moves:
                if x not in illegal_moves:
                    self.all_moves.append(x)

        log.debug("%s: all_moves %s" % (self, ",".join(self.all_moves)))
        COST_LENGTH = 1
        STATE_INDEX_LENGTH = 4
        self.ROW_LENGTH = COST_LENGTH + (STATE_INDEX_LENGTH * len(self.all_moves))
 def __init__(self, parent):
     LookupTable.__init__(
         self,
         parent,
         'lookup-table-5x5x5-step310-edges-x-plane-with-solved-centers.txt',
         '------------sSSTTtuUUVVv------------',
         linecount=40320,
         max_depth=14,
         filesize=3427200)
 def __init__(self, parent):
     LookupTable.__init__(
         self,
         parent,
         'lookup-table-5x5x5-step302-edges-x-plane-centers-only.txt',
         'LLLLLLLLLFFFFFFFFFRRRRRRRRRBBBBBBBBB',
         linecount=2520,
         max_depth=6,
         filesize=146160)
 def __init__(self, parent):
     LookupTable.__init__(
         self,
         parent,
         'lookup-table-5x5x5-step301-edges-x-plane-edges-only.txt',
         '------------sSSTTtuUUVVv------------',
         linecount=40320,
         max_depth=13,
         filesize=3346560)
예제 #17
0
 def __init__(self, parent):
     LookupTable.__init__(
         self,
         parent,
         'lookup-table-4x4x4-step71-tsai-phase3-edges.txt',
         '213098ba6574',  # this is the same with/without symmetry
         #linecount=239500800, # without symmetry
         linecount=14999140,  # with symmetry
         max_depth=13)
 def __init__(self, parent):
     LookupTable.__init__(
         self,
         parent,
         "lookup-table-5x5x5-step100-stage-first-four-edges.txt",
         "TBD",
         linecount=7389543,
         filesize=421203951,
     )
예제 #19
0
 def __init__(self, parent):
     LookupTable.__init__(
         self,
         parent,
         "lookup-table-4x4x4-step21-highlow-edges-edges.txt",
         "UDDUUDDUDUDUUDUDDUUDDUUDDUDUUDUDDUUDDUUDUDDUUDDU",
         linecount=2704156,
         max_depth=10,
         filesize=227149104,
     )
예제 #20
0
 def __init__(self, parent):
     LookupTable.__init__(
         self,
         parent,
         'lookup-table-4x4x4-step61-tsai-phase2-centers.txt',
         ('UUUULLLLFFFFRRRRFFFFUUUU', 'UUUURRRRFFFFLLLLFFFFUUUU',
          'UUUULLRRFFFFRRLLFFFFUUUU', 'UUUULLRRFFFFLLRRFFFFUUUU',
          'UUUURRLLFFFFRRLLFFFFUUUU', 'UUUURRLLFFFFLLRRFFFFUUUU',
          'UUUURLRLFFFFRLRLFFFFUUUU', 'UUUURLRLFFFFLRLRFFFFUUUU',
          'UUUULRLRFFFFRLRLFFFFUUUU', 'UUUULRLRFFFFLRLRFFFFUUUU',
          'UUUURLLRFFFFLRRLFFFFUUUU', 'UUUULRRLFFFFRLLRFFFFUUUU'),
         linecount=900900)
예제 #21
0
 def __init__(self, parent, build_state_index=False):
     LookupTable.__init__(
         self,
         parent,
         "lookup-table-4x4x4-step13-FB-centers-stage.txt",
         self.state_targets,
         linecount=735471,
         max_depth=8,
         filesize=40450905,
         all_moves=moves_444,
         illegal_moves=("Lw", "Lw'", "Lw2", "Bw", "Bw'", "Bw2", "Dw", "Dw'", "Dw2"),
         use_state_index=True,
         build_state_index=build_state_index,
     )
예제 #22
0
 def __init__(self, parent):
     LookupTable.__init__(
         self,
         parent,
         "lookup-table-4x4x4-step22-highlow-edges-centers.txt",
         (
             "LLLLRRRR",
             "LLRRLLRR",
             "LLRRRRLL",
             "LRLRLRLR",
             "LRLRRLRL",
             "LRRLRLLR",
             "RLLRLRRL",
             "RLRLLRLR",
             "RLRLRLRL",
             "RRLLLLRR",
             "RRLLRRLL",
             "RRRRLLLL",
         ),
         linecount=70,
         max_depth=4,
         filesize=1610,
     )
 def __init__(self, parent):
     LookupTable.__init__(self,
                          parent,
                          'lookup-table-4x4x4-step110-edges.txt',
                          '111111111111_10425376a8b9ecfdhgkiljnm',
                          linecount=7363591)  # 10-deep
 def __init__(self, parent):
     LookupTable.__init__(self,
                          parent,
                          'lookup-table-4x4x4-step13-FB-centers-stage.txt',
                          '00f0f0',
                          linecount=735471)
예제 #25
0
 def __init__(self, parent):
     LookupTable.__init__(self,
                          parent,
                          'lookup-table-4x4x4-step71-tsai-phase3-edges.txt',
                          '213098ba6574',
                          linecount=14999140)