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

Tell us what’s happening:

need help I don’t really know the answer it always says there’s an error

Your code so far

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

# User Editable Region

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

        # display our progress
        print(rods)

# User Editable Region

        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')

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36

Challenge Information:

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

The instructions ask you to move the code starting from the declaration of forward.

Move the code nested inside the first if statement (except the first print() call) to your new function.

can you provide the correct code I’ve been stuck in this step for a whole day

1 Like

That’s not what the forum is for. You can ask questions about anything that you find confusing or unclear and people will provide answers and guidance.

Move this block of code into the make_allowed_move() function (delete or replace “pass”)