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

Tell us what’s happening:

IM FREAKING STUCK! PLS HELPP! IS THERE A GLITCH OR SOMETHING! ITS ALWAYS GIVING ME 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):
    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())

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

# 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/121.0.0.0 Safari/537.36 Edg/121.0.0.0

Challenge Information:

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

Hi, welcome to the forum!

What error are you getting?

Sorry, your code does not pass. Keep trying.

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

that’s the error

Step 31

It’s time to move some code from the move() function to the make_allowed_move() function. Move the code nested inside the first if statement (except the first print() call) to your new function. Pay close attention to the indentation. Don’t forget to remove the pass keyword.

Code that’s indented all falls under the if. It looks like you missed the last two lines

            # display our progress
            print(rods)

These lines disappeared

1 Like

yeah i did miss the last two lines, thank you!

Hey, so I am indenting what you have in green and eliminating the pass in make_allowed_move, but it is still not passing. I am still getting an indentation error Any tips?

Please open a new topic and share your code