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

Tell us what’s happening:

I have tried the ways it showed in similar question but not getting through this step can someone please look into this and guide me how can i pass the statement?

Your code so far

NUMBER_OF_DISKS = 4
number_of_moves = 2**NUMBER_OF_DISKS - 1
rods = {
    'A': list(range(NUMBER_OF_DISKS, 0, -1)),
    'B': [],
    'C': []
}

def make_allowed_move(rod1, rod2):    
    forward = False
    if not rods[rod2]:
        forward = True
    elif rods[rod1] and rods[rod1][-1] < rods[rod2][-1]:
        forward = True
                      
    if forward:
        print(f'Moving disk {rods[rod1][-1]} from {rod1} to {rod2}')
        rods[rod2].append(rods[rod1].pop())
    else:
        print(f'Moving disk {rods[rod2][-1]} from {rod2} to {rod1}')
        rods[rod1].append(rods[rod2].pop())
    
    # display our progress
    print(rods, '\n')

def move(n, source, auxiliary, target):
    # display starting configuration
    print(rods, '\n')
    for i in range(number_of_moves):
        remainder = (i + 1) % 3

# User Editable Region

        if remainder == 1:
            if (n % 3) == 1:
                print(f'Move {i + 1} allowed between {source} and {target}')
                make_allowed_move(source, target)

# User Editable Region

        elif remainder == 2:
            print(f'Move {i + 1} allowed between {source} and {auxiliary}')
            make_allowed_move(source, auxiliary)
        elif remainder == 0:
            print(f'Move {i + 1} allowed between {auxiliary} and {target}')
            make_allowed_move(auxiliary, 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/136.0.0.0 Safari/537.36

Challenge Information:

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

What about this specific step has you stuck?

Hi There,
You should divide it by 2, and the remainder shouldn’t be 0.

Ok, we could just give him the answer instead.

1 Like

let me try that and will let you know if this works or not

nope still the same its not moving anywhere

You really should start trying to describe how specifically you are stuck on pieces of the code of the specific step. It’s a critical programming skill and it helps you debug.

What is the same? What is not moving?

the steps are not moving i tried the ways it mentioned in the forum by other person and have tried the above method to divide it by 2 and leave the remainder 1 but still its not passing can you help me?

What does ‘the steps are not moving’ mean? If you tried different code, like we have said before, please post what you tried.

sure

\if remainder == 1:
            if NUMBER_OF_DISKS % 2 == 0:
                print(f'Move {i + 1} allowed between {source} and {target}')
                make_allowed_move(source, target)\

I’ve edited your post to improve the readability of the code. When you enter a code block into a forum post, please precede it with a separate line of three backticks and follow it with a separate line of three backticks to make it easier to read.

You can also use the “preformatted text” tool in the editor (</>) to add backticks around text.

See this post to find the backtick on your keyboard.
Note: Backticks (`) are not single quotes (').

As you have been asked before, you need to try to format your code.

if remainder == 1:
            if NUMBER_OF_DISKS % 2 == 0:
                print(f'Move {i + 1} allowed between {source} and {target}')
                make_allowed_move(source, target)

Why did you add two if statements? Why isn’t the first if statement indented? What are those two \ doing there? Where was the variable NUMBER_OF_DISKS mentioned in this step?

I had put NUMBER_OF_DISKS as my variable so thought of putting the same here but was not sure to format the statement?

Where did the instructions or error message say to use NUMBER_OF_DISKS?

so you want me to replace the NUMBER_OF_DISKS BACK TO N right?

but how can i format it?

I want you to answer the question I asked.

As you have been told before, we aren’t here to just tell you the answer to copy out. We’re here to help you debug your own code.