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

Tell us what’s happening:

Hi, Guys! I have tried this code multiple times and still can’t figure out.

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': []
}

def move(n, source, auxiliary, target):
    # display starting configuration
    print(rods)
    for i in range(number_of_moves):
        remainder = (i + 1) % 3

# User Editable Region

        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}')
                disk = rods[source].pop(-1)
                rods[target].append(disk)

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

Challenge Information:

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

You’re close!

pop() doesn’t need an argument to remove the last element from the list. Example:

foo = [1, 2, 3]
print(foo.pop())  # Output: 3
print(foo)        # Output: [1, 2]

Notice that pop() accessed the last element in the list, but it also modified the list itself. It removed the last element.

The challenge also (silently) requires you to use one line of code. You don’t actually need an auxiliary variable (disks in your code) to complete the challenge.

Good luck, and happy coding.