Você tem três hastes numeradas de 1 a 3. Alguns discos de tamanhos diferentes estão empilhados na primeira haste. Os discos estão ordenados por tamanho: o menor fica no topo e o maior, na base.
Crie uma função que mostre como transferir toda a pilha de n discos da primeira para a terceira haste, obedecendo às seguintes regras:
A função deve retornar uma lista de movimentos. Cada movimento é representado por uma tupla de dois números: o número da haste de onde retirar o disco e o número da haste onde colocá-lo.
hanoi(1) ➞ [(1, 3)]
hanoi(2) ➞ [(1, 2), (1, 3), (2, 3)]
hanoi(4) ➞ [(1, 2), (1, 3), (2, 3), (1, 2), (3, 1), (3, 2), (1, 2), (1, 3), (2, 3), (2, 1), (3, 1), (2, 3), (1, 2), (1, 3), (2, 3)]n == 0