Learn Recursion by Solving the Tower of Hanoi Puzzle - Step 31

Here is what I had at this step. It does work in a code editor, but doesn’t pass the tests for the challenges. I’m not sure why because the error messaging is a little opaque. I decided to drop the Python course at this step because I was spending a lot of time trying to figure out what the challenge wanted on a lot of these questions.

NUMBER_OF_DISKS = 3
number_of_moves = 2**NUMBER_OF_DISKS - 1
rods = {
    'A': list(range(NUMBER_OF_DISKS, 0, -1)),
    'B': [],
    'C': []
}

def make_allowed_move(rod1, rod2):
    forward = False
    if not rods[rod2]:
        forward = True
    elif rods[rod1] and rods[rod1][-1] < rods[rod2][-1]:
                forward = True
    if forward:
        print(f'Moving disk {rods[rod1][-1]} from {rod1} to {rod2}')
        rods[rod2].append(rods[rod1].pop())
    else:
        print(f'Moving disk {rods[rod2][-1]} from {rod2} to {rod1}')
        rods[rod1].append(rods[rod2].pop())

def move(n, source, auxiliary, target):
    # display starting configuration
    print(rods)
    for i in range(number_of_moves):
        remainder = (i + 1) % 3
        if remainder == 1:
            print(f'Move {i + 1} allowed between {source} and {target}')
            make_allowed_move(source,target)
        elif remainder == 2:
            print(f'Move {i + 1} allowed between {source} and {auxiliary}')
        elif remainder == 0:
            print(f'Move {i + 1} allowed between {auxiliary} and {target}')
            # display our progress
            print(rods)

        elif remainder == 2:
            print(f'Move {i + 1} allowed between {source} and {auxiliary}')
        elif remainder == 0:
            print(f'Move {i + 1} allowed between {auxiliary} and {target}')
# initiate call from source A to target C with auxiliary B
move(NUMBER_OF_DISKS, 'A', 'B', 'C')

Hi @slo_matt

For this step you need to move lines 18 to 31 to the new function.

Here is a comparison of your code and the original code.

The original code is in blue.
Your code is in red.
The overlap is magenta(ish).

Happy coding

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.