Back to Freecodecamp

Step 55

curriculum/challenges/english/blocks/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md

latest1.8 KB
Original Source

--description--

As a final step, reduce the indentation level of all the code after the return statement.

Well done. You have completed the Tower of Hanoi practice project.

--hints--

You should reduce the indentation level of all the code after the return statement.

js
({ test: () => assert(runPython(`
    a, b, c = [3, 2, 1], [], []
    move(3, a, b, c)
    a == [] and b == [] and c == [3, 2, 1]
  `))
})

--seed--

--seed-contents--

py
--fcc-editable-region--
NUMBER_OF_DISKS = 5
A = list(range(NUMBER_OF_DISKS, 0, -1))
B = []
C = []

def move(n, source, auxiliary, target):
    if n <= 0:
        return
        # move n - 1 disks from source to auxiliary, so they are out of the way
        move(n - 1, source, target, auxiliary)
        
        # move the nth disk from source to target
        target.append(source.pop())
        
        # display our progress
        print(A, B, C, '\n')
        
        # move the n - 1 disks that we left on auxiliary onto target
        move(n - 1,  auxiliary, source, target)
              
# initiate call from source A to target C with auxiliary B
move(NUMBER_OF_DISKS, A, B, C)
--fcc-editable-region--

--solutions--

py
NUMBER_OF_DISKS = 5
A = list(range(NUMBER_OF_DISKS, 0, -1))
B = []
C = []

def move(n, source, auxiliary, target):
    if n <= 0:
        return
    # move n - 1 disks from source to auxiliary, so they are out of the way
    move(n - 1, source, target, auxiliary)
        
    # move the nth disk from source to target
    target.append(source.pop())
        
    # display our progress
    print(A, B, C, '\n')
        
    # move the n - 1 disks that we left on auxiliary onto target
    move(n - 1,  auxiliary, source, target)
              
# initiate call from source A to target C with auxiliary B
move(NUMBER_OF_DISKS, A, B, C)