def solve_hanoi(source_peg, target_peg, other_peg, num_disks):
"""Prints out the instructions for moving num_disks (ordered
smallest to largest, going down) from the source_peg to the
target_peg, using the other_peg, as needed.
Preconditions:
source_peg, target_peg, and other_peg are strings
num_disks is an integer"""
if num_disks == 1:
# it's easy to move just 1 disk!
print("move from " + source_peg + " to " + target_peg)
else:
# it's harder to move multiple disks. We have to first move
# the top n-1 disks temporarily to "other" then move the
# largest disk to the target peg. Then move the remaining n-1
# disks back on top of thh largest @ target.
# temporarily move all but the last disk to the "other peg"
# how can we do this? Check the specs of THIS FUNCTION. It
# can do exactly this!
solve_hanoi(source_peg, other_peg, target_peg, num_disks-1)
# move the last disk to the target peg
print("move from " + source_peg + " to " + target_peg)
# now move all but the last disk to the target peg
# again, how can we do this? we can call THIS FUNCTION
solve_hanoi(other_peg, target_peg, source_peg, num_disks-1)
n_disks = int(input("How many disks are on your tower? "))
print("That's easy! Here's what you do: ")
solve_hanoi("left", "right", "middle", n_disks)