Help me with my cube scramble generator

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Adrian0518
    New Member
    • Apr 2016
    • 1

    Help me with my cube scramble generator

    I'm trying to make a cube scramble generator to make moves to scramble my Rubik's cube.
    This is my code:
    The scramble generator:
    Code:
    import random
    from switcher import *
    
    
    class AlgGen3x:
        def __init__(self, move_num, move_set):
            self.move_num = move_num
            self.moves = move_set
            self.alg_generator()
    
        # Generate a alg for scramble
        def alg_generator(self):
            pre_num = ''
            for n in range(self.move_num):
                print('Creating move ' + str(n))
                ran_num = random.randint(1, 18)
                if not ran_num == pre_num:
                    pre_num = ran_num
                    self.switch(ran_num, self.moves)
            self.update()
    
        # Switch for cube 3x
        @staticmethod
        def switch(tar_obj, tar_set):
            global move
            while Switcher(tar_obj):
                if case(1, 7, 13):
                    move = 'U'
                    break
                if case(2, 8, 14):
                    move = 'D'
                    break
                if case(3, 9, 15):
                    move = 'R'
                    break
                if case(4, 10, 16):
                    move = 'L'
                    break
                if case(5, 11, 17):
                    move = 'F'
                    break
                if case(6, 12, 18):
                    move = 'D'
                    break
    
            for n in range(7, 13):
                if tar_obj == n:
                    move += 'i'
    
            for n in range(13, 19):
                if tar_obj == n:
                    move += '2'
    
            return tar_set.add(move)
    
        def update(self):
            return self.moves
    switcher.py:
    Code:
    class Switcher(object):
    
        value = None
    
        def __new__(class_, value):
            class_.value = value
            return True
    
    
    def case(*args):
        return any((arg == Switcher.value for arg in args))
    However, when run the code with this:
    Code:
    # moves = set()
    
    AlgGen3x(25, moves)
    for move in moves:
        print(move)
    It returns the moves as:
    L
    R
    L2
    Di
    Fi
    F
    R2
    Ui
    D2
    U
    U2

    Help me to change the code or tell me what is the problem
Working...