Tell us what’s happening:
I’ve just completed the Towers of Hanoi Project and I’d really appreciate some tips on improving my methods or code. I’ve had some formatting/scope issues and am wondering if there is a simpler way to find “opposite_tower.” This has taught me a lot about recursion and helped me significantly with my coding thought process and abstract concepts. Thanks!!
Your code so far
def hanoi_solver(num_disks: int) -> str:
"""solves tower of hanoi puzzle through recursion"""
tower_1 = [] #creating empty towers#
tower_2 = []
tower_3 = [""]
for i in range(num_disks):
tower_1.append(num_disks - i)
total_msg = f"{tower_1} {tower_2} {tower_3[1:]}"
def move(beginning: list, end: list) -> None:
"""moves smallest number from beginning list to end list"""
end.append(beginning.pop(-1))
nonlocal total_msg
total_msg += f"\n{tower_1} {tower_2} {tower_3[1:]}" #printing towers after each movement#
def recursive_movement(starting_tower, target_tower, num_disks):
"""recursively calls move function to solve towers"""
if starting_tower == tower_1 and target_tower == tower_2:
opposite_tower = tower_3
if starting_tower == tower_1 and target_tower == tower_3:
opposite_tower = tower_2
if starting_tower == tower_2 and target_tower == tower_1:
opposite_tower = tower_3
if starting_tower == tower_2 and target_tower == tower_3:
opposite_tower = tower_1
if starting_tower == tower_3 and target_tower == tower_1:
opposite_tower = tower_2
if starting_tower == tower_3 and target_tower == tower_2:
opposite_tower = tower_1
if num_disks == 1:
move(starting_tower, target_tower)
elif num_disks > 1:
recursive_movement(starting_tower, opposite_tower, num_disks - 1)
move(starting_tower, target_tower)
recursive_movement(opposite_tower, target_tower, num_disks - 1)
return total_msg
return recursive_movement(tower_1, tower_3, num_disks)
if __name__ == "__main__":
print(hanoi_solver(10))
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36
Challenge Information:
Implement the Tower of Hanoi Algorithm - Implement the Tower of Hanoi Algorithm