Learn Recursion by Solving the Tower of Hanoi Puzzle - Step 28

Tell us what’s happening:

Not sure what I’m supposed to do here. I’ve tried with and without “rods” in front. I don’t know which lists I’m supposed to print.

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
            if not rods[target]:
                forward = True
            elif rods[source] and rods[source][-1] < rods[target][-1]:
                forward = True

# User Editable Region

            if forward:
                print(f'Moving disk {rods[source][-1]} from {source} to {target}')
                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[source],rods[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 Edg/120.0.0.0

Challenge Information:

Learn Recursion by Solving the Tower of Hanoi Puzzle - Step 28

Hi @Mikie22

The comment is not outside the else statement.

Happy coding

Oh, I thought it was because it wasn’t indented. I changed it so that the comment is all the way to the left, followed by the print statement. I can’t seem to copy / paste the code with the proper indentation showing up in here.

You indented the wrong way.

Now I have rods, display and print in a line, like this:

rods[source].append(rods[target].pop())
#display our progress
print(rods[source],rods[target])

Nevermind, I got it working, thank you!

1 Like

Hello, how did you get it working?

hi @rhodi, welcome to the forum!
please open your own topic to ask for help

If you have a question about a specific challenge as it relates to your written code for that challenge and need some help, click the Help button located on the challenge. This button only appears if you have tried to submit an answer at least three times.

The Help button will create a new topic with all code you have written and include a link to the challenge also. You will still be able to ask any questions in the post before submitting it to the forum.

Thank you.