Пример #1
0
def solve(current_state, rule_order):
    """
    Solve the puzzle with a list of rules
    """
    iteration = 1
    while not einstein.end_solution(current_state):
        # Safe guard to ensure a rules are being applied
        pre_rules_state = current_state
        print "######  begin iteration", iteration
        for rule in rule_order:
            old_state = current_state
            
            # See what changes state
            current_state = rule(current_state)
            if current_state != old_state: #something happened
                print 'RULE {0} changed state'.format(rule.__doc__)
            
            # see if any additional changes can be made    
            current_state = einstein.elimination_sweep(current_state)
                
        # Safe guard to ensure a rules are being applied 
        if current_state == pre_rules_state: #nothing happened
            break
        iteration += 1
    return current_state, iteration - 1
Пример #2
0
def solve(current_state, rule_order):
    """
    Solve the puzzle with a list of rules
    """
    iteration = 1
    while not einstein.end_solution(current_state):
        # Safe guard to ensure a rules are being applied
        pre_rules_state = current_state
        print "######  begin iteration", iteration
        for rule in rule_order:
            old_state = current_state

            # See what changes state
            current_state = rule(current_state)
            if current_state != old_state:  #something happened
                print 'RULE {0} changed state'.format(rule.__doc__)

            # see if any additional changes can be made
            current_state = einstein.elimination_sweep(current_state)

        # Safe guard to ensure a rules are being applied
        if current_state == pre_rules_state:  #nothing happened
            break
        iteration += 1
    return current_state, iteration - 1
Пример #3
0
    while not einstein.end_solution(current_state):
        # Safe guard to ensure a rules are being applied
        pre_rules_state = current_state
        print "######  begin iteration", iteration
        for rule in rule_order:
            old_state = current_state
            
            # See what changes state
            current_state = rule(current_state)
            if current_state != old_state: #something happened
                print 'RULE {0} changed state'.format(rule.__doc__)
            
            # see if any additional changes can be made    
            current_state = einstein.elimination_sweep(current_state)
                
        # Safe guard to ensure a rules are being applied 
        if current_state == pre_rules_state: #nothing happened
            break
        iteration += 1
    return current_state, iteration - 1
        
if __name__ == '__main__':
    state = deepcopy(einstein.START_STATE)
    rule_order = [
        rule1, rule2, rule3, rule4, rule5, rule6, rule7, rule8,
        rule9, rule10, rule11, rule12, rule13, rule14, rule15
    ]
    state, iteration = solve(state, rule_order)
    einstein.print_solution(state)
    print '\n\nSolved: {0} on iteration {1}'.format(einstein.end_solution(state), iteration)
Пример #4
0
        pre_rules_state = current_state
        print "######  begin iteration", iteration
        for rule in rule_order:
            old_state = current_state

            # See what changes state
            current_state = rule(current_state)
            if current_state != old_state:  #something happened
                print 'RULE {0} changed state'.format(rule.__doc__)

            # see if any additional changes can be made
            current_state = einstein.elimination_sweep(current_state)

        # Safe guard to ensure a rules are being applied
        if current_state == pre_rules_state:  #nothing happened
            break
        iteration += 1
    return current_state, iteration - 1


if __name__ == '__main__':
    state = deepcopy(einstein.START_STATE)
    rule_order = [
        rule1, rule2, rule3, rule4, rule5, rule6, rule7, rule8, rule9, rule10,
        rule11, rule12, rule13, rule14, rule15
    ]
    state, iteration = solve(state, rule_order)
    einstein.print_solution(state)
    print '\n\nSolved: {0} on iteration {1}'.format(
        einstein.end_solution(state), iteration)
Пример #5
0
    while not einstein.end_solution(current_state):
        # Safe guard to ensure a rules are being applied
        pre_rules_state = current_state
        print("######  begin iteration", iteration)
        for rule in rule_order:
            old_state = current_state

            # See what changes state
            current_state = rule(current_state)
            if current_state != old_state: #something happened
                print('RULE {0} changed state'.format(rule.__doc__))

            # see if any additional changes can be made
            current_state = einstein.elimination_sweep(current_state)

        # Safe guard to ensure a rules are being applied
        if current_state == pre_rules_state: #nothing happened
            break
        iteration += 1
    return current_state, iteration - 1

if __name__ == '__main__':
    state = deepcopy(einstein.START_STATE)
    rule_order = [
        rule1, rule2, rule3, rule4, rule5, rule6, rule7, rule8,
        rule9, rule10, rule11, rule12, rule13, rule14, rule15
    ]
    state, iteration = solve(state, rule_order)
    einstein.print_solution(state)
    print('\n\nSolved: {0} on iteration {1}'.format(einstein.end_solution(state), iteration))