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

Tell us what’s happening:

``````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

else:
print(f'Move {i + 1} allowed between {source} and {auxiliary}')
# make_allowed_move(source, auxiliary)

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

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

User Agent is: `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36`

Challenge Information:

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

prompte:Your code raised an error before any tests could run. Please fix it and try again.

Also, turn the `# make_allowed_move(source, auxiliary)` comment into code.

You accidentally commented out a line instead of un-commenting. It is a bit confusing since this exact line appears twice.

It worked.Thanks a lot.

1 Like

Just stuck on this step too. What’s puzzling me is I’m focused on the `elif` block regarding the ‘do the same with your `elif`’ thing.

In the future, please create your own topic when you have specific questions about your own challenge code. Only respond to another thread when you want to provide help to the original poster of the other thread or have follow up questions concerning other replies given to the original poster.

The easiest way to create a topic for help with your own solution is to click the Ask for Help button located on each challenge. This will automatically import your code in a readable format and pull in the challenge url while still allowing you to ask any question about the challenge or your code.

Thank you.