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

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

This is not valid syntax. You cannot use not like that. Here you need to check that rods[source] is not empty, which means that rods[source] should return True when evaluated as a condition. You don’t need to use not or compare it with anything else.

elif rods[source] not [] and rods[source][-1] < rods[target][-1]:
                forward = True

there is syntax error… in above code… Preformatted text

removed

write this piece of code…

Please do not post solution code and please don’t revive 6 month old threads. That person has likely moved on already.

It is great that you solved the challenge, but instead of posting your full working solution, it is best to stay focused on answering the original poster’s question(s) and help guide them with hints and suggestions to solve their own issues with the challenge.

We are trying to cut back on the number of spoiler solutions found on the forum and instead focus on helping other campers with their questions and definitely not posting full working solutions.