# Learn Recursion by Solving the Tower of Hanoi Puzzle - Step 27

### Tell us what’s happening:

I changed the direction in the rods[source] and that of pop() to pop(1) but its not working

``````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[source][1]} from {source} to {target}')
rods[target].append(rods[source].pop(1))

/* 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')
``````

User Agent is: `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36`

### Challenge Information:

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

I think in this step it’s also really important that you understand what the code means.

Last step we wrote `rods[target].append(rods[source].pop())`
What this did is move the disk from the target rod (rod A) to the source rod (rod C).

Now what the question wants, inside the `else` body is to move your source rod (rod C) to your target rod (Rod A).
You can do this using the same line you used in your if body, except you want to append to the source, and pop from the target. There shouldn’t be aby other changes.

1 Like

the target rod (rod A) to the source rod (rod C)

I thought the source rod is A and the target rod is C?

rods[target].append(rods[source].pop())

Isn’t this “popping” data from the source rod and appending it to the target rod? If so, that’s not

move the disk from the target rod (rod A) to the source rod (rod C).

It’s moving the disk from the source rod to the target rod…

— removed solution code —

Hi, welcome to the forum.

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.