A Torre de Hanói é um quebra-cabeça lógico que envolve mover uma pilha de discos de um pilar para outro, respeitando certas regras. Este jogo é um excelente exemplo de um problema que pode ser resolvido de forma eficiente utilizando a recursão. Antes de mergulharmos na implementação do algoritmo em Python, vamos entender as regras do jogo.
Regras do Jogo:
- O quebra-cabeça consiste em três pinos e uma série de discos de diferentes tamanhos que podem ser empilhados em qualquer pino.
- Os discos são empilhados em ordem decrescente de tamanho, com o disco maior na parte inferior e o menor no topo.
- O objetivo é mover todos os discos do pino inicial para o pino final, utilizando o pino intermediário, seguindo as regras abaixo.
- Só é possível mover um disco de cada vez.
- Um disco maior nunca pode ser colocado sobre um disco menor.
Agora que entendemos as regras, podemos começar a implementar o algoritmo de solução utilizando Python. Abaixo está uma implementação simples usando recursão:
pythondef torre_hanoi(n, origem, destino, auxiliar):
"""
Função para resolver o quebra-cabeça da Torre de Hanói usando recursão.
Parâmetros:
- n: o número de discos a serem movidos.
- origem: o pino de origem.
- destino: o pino de destino.
- auxiliar: o pino auxiliar.
"""
if n == 1:
print(f"Mova o disco 1 de {origem} para {destino}")
return
torre_hanoi(n-1, origem, auxiliar, destino)
print(f"Mova o disco {n} de {origem} para {destino}")
torre_hanoi(n-1, auxiliar, destino, origem)
# Exemplo de uso:
num_discos = 3
torre_hanoi(num_discos, 'A', 'C', 'B')
Nesta implementação, a função torre_hanoi recebe quatro parâmetros: o número de discos n, os nomes dos três pinos (origem, destino e auxiliar). A lógica da função é a seguinte:
- Se houver apenas um disco a ser movido, simplesmente o movemos da origem para o destino.
- Caso contrário, movemos
n-1discos da origem para o pino auxiliar, usando o destino como pino auxiliar. - Em seguida, movemos o disco restante da origem para o destino.
- Finalmente, movemos os
n-1discos que colocamos no pino auxiliar para o destino, usando a origem como pino auxiliar.
Esta função é chamada recursivamente até que todos os discos tenham sido movidos para o pino de destino, seguindo as regras do jogo.
Agora você pode usar essa implementação para resolver o quebra-cabeça da Torre de Hanói com qualquer número de discos, fornecendo o número desejado de discos e os nomes dos três pinos. Aproveite a experiência de explorar esse problema clássico da matemática e da ciência da computação!
“Mais Informações”

Além da implementação do algoritmo em Python, podemos explorar mais a fundo alguns conceitos relacionados à Torre de Hanói, como a sua história, a teoria por trás do problema e algumas curiosidades interessantes.
História:
A Torre de Hanói é um quebra-cabeça matemático que foi inventado por Édouard Lucas em 1883. Ele inicialmente chamou o quebra-cabeça de “La Tour d’Hanoï”, em homenagem à cidade vietnamita de Hanói. No entanto, acredita-se que a origem real do quebra-cabeça seja anterior a Lucas e possa estar associada a lendas da Índia ou da China. Uma das lendas mais conhecidas é a “Torre de Bramha”, que envolve um templo com três pináculos de diamante e uma série de discos de ouro que precisam ser movidos de um pilar para outro.
Teoria por trás do problema:
A Torre de Hanói é um excelente exemplo de um problema que pode ser resolvido de forma elegante usando recursão. A estratégia de solução se baseia em dividir o problema em subproblemas menores e aplicar a mesma estratégia a cada subproblema. A chave para resolver a Torre de Hanói está em perceber que, para mover n discos de um pino para outro, podemos dividir o problema em três etapas:
- Mover os n-1 discos superiores para um pino auxiliar.
- Mover o disco maior (n-ésimo disco) para o pino de destino.
- Mover os n-1 discos do pino auxiliar para o pino de destino, usando o pino inicial como auxiliar.
Essa abordagem recursiva nos permite resolver o problema de forma eficiente, com um tempo de execução de O(2^n), onde n é o número de discos. Apesar de parecer uma solução simples, a Torre de Hanói é um problema clássico que tem aplicações em diversas áreas da matemática e da ciência da computação, incluindo teoria dos algoritmos e teoria dos grafos.
Curiosidades:
- A versão clássica da Torre de Hanói consiste em três pinos e uma pilha de discos, mas é possível generalizar o problema para um número diferente de pinos e discos.
- O maior número de movimentos necessário para resolver a Torre de Hanói com n discos é 2^n – 1. Isso significa que o número de movimentos dobra a cada aumento de um disco.
- A Torre de Hanói tem sido usada como um teste de habilidade mental em diferentes contextos, desde jogos educativos até entrevistas de emprego em empresas de tecnologia.
Explorar a Torre de Hanói não só oferece uma oportunidade para praticar habilidades de programação e pensamento lógico, mas também nos permite apreciar a beleza e a elegância dos problemas matemáticos clássicos. Espero que estas informações adicionais enriqueçam ainda mais sua compreensão deste fascinante quebra-cabeça!

