Tell us what’s happening:
Can someone help me with this step please?
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.
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(source, 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())
def move(n, source, auxiliary, target):
# display starting configuration
print(rods)
for i in range(n):
remainder = (i + 1) % 3
if remainder == 1:
print(f'Move {i + 1} allowed between {source} and {target}')
# 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/121.0.0.0 Safari/537.36
Challenge Information:
Learn Recursion by Solving the Tower of Hanoi Puzzle - Step 31