I have called the make_allowed_move() function but my code does not pass. I have tried calling the function in different places and I get the same result: Sorry, your code does not pass. Don't give up.
Where exactly in my code am I supposed to call this function?
NUMBER_OF_DISKS = 3
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)
def move(n, source, auxiliary, target):
# display starting configuration
print(rods)
# User Editable Region
make_allowed_move(source, target)
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/120.0.0.0 Safari/537.36
Challenge Information:
Learn Recursion by Solving the Tower of Hanoi Puzzle - Step 34
Hiya there Zack. At the point you’re calling it, we don’t know if the move is actually
valid or not. And typically when we print what we’re going to do in the console, we usually do them right after.
Hi @aaronvincent6411 , thanks for your suggestion. I have tried calling the function inside the if statement. In the console on the right side of my screen I can see that the moves are made and printed out, but the code checker tells me that:-
Sorry, your code does not pass. Try again.
You should call `make_allowed_move()` passing `source` and `target` as the arguments.