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

Tell us what’s happening:

Still unsure about this step. Any help would be appreciated!

Your code so far

NUMBER_OF_DISKS = 4
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())
    
    # display our progress
    print(rods, '\n')

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

# User Editable Region

       elif remainder == 2:
            if n % 2 != 0:  # Check if n is odd
                print(f'Move {i + 1} allowed between {source} and {auxiliary}')
                make_allowed_move(source, auxiliary)
        else:
            if n % 2 != 0:  # Check if n is odd
                print(f'Move {i + 1} allowed between {auxiliary} and {target}')
                make_allowed_move(auxiliary, target)     

        

# User Editable Region

        elif remainder == 0:
            print(f'Move {i + 1} allowed between {auxiliary} and {target}')
            make_allowed_move(auxiliary, 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/126.0.0.0 Safari/537.36

Challenge Information:

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

I would advice resetting your code. This step wants you to only modify the code under the else block by adding an if statement. The if statement being one to determine if n is odd.

Then you’re supposed to have the print statement and the move code inside that block.

I hope this helps.

Awesome. I understand what you are talking about with the instructions and the if statement.

if n % 2 != 0:
print(f’Move {i + 1} allowed between {source} and {auxiliary}')
make_allowed_move(source, auxiliary)

here is some modified code I made but I still can not get it to pass. I know it is not right but I think I am heading in the right direction.

Never mind I had an indention error on my end and corrected it.