Tell us what’s happening:
The other case in which you have to move the disk necessarily from source
to target
is when the source list is not empty and the last disk in source
is lower than the last disk in target
.
Add an elif
statement to check this condition. Then, set the forward
variable to True
if the condition is met.
I keep getting an error on this one too!
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
if remainder == 1:
print(f'Move {i + 1} allowed between {source} and {target}')
forward = False
# User Editable Region
if not rods[target]:
forward = True
elif rods[source] not [] and rods[source][-1] < rods[target][-1]:
forward = True
# 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 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2.1 Safari/605.1.15
Challenge Information:
Learn Recursion by Solving the Tower of Hanoi Puzzle - Step 24