Tell us what’s happening:
Apart from not being able to execute the instructions - the functionality of the lesson module is appalling.
If you use the browser back button to take you back to the previous step so that you can complete it again (assuming that by doing so you will be able to start the problem step afresh) it loads up the same mess you just tried to reverse out of. That’s not helpful.
You don’t want to hit the reset button as this seems to imply that you’ll reset the whole lesson and will have to start again.
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(rod1, rod2):
if remainder == 1:
forward = True
elif rods[source] and rods[source][-1] < rods[target][-1]:
forward = True
if forward:
rods[target].append(rods[source].pop())
else:
print(f'Moving disk {rods[target][-1]} from {target} to {source}')
rods[source].append(rods[target].pop())
# display our progress
print(rods)
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}')
forward = False
if not rods[target]:
pass
def move(n, source, auxiliary, target):
# display starting configuration
print(rods)
for i in range(number_of_moves):
remainder = (i + 1) % 3
print(f'Moving disk {rods[source][-1]} from {source} to {target}')
print(f'Move {i + 1} allowed between {source} and {target}')
# User Editable Region
# 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 Edg/126.0.0.0
Challenge Information:
Learn Recursion by Solving the Tower of Hanoi Puzzle - Step 31