Algoritmo
Problema proposto - Torre de Hanoi.
Antes de começar, vamos assumir as seguintes suposições.
- Os discos começam posicionados da seguinte forma na primeira coluna. Mais abaixo: o maior e os menores se posicionando em ordem decrescente em cima deste disco maior.
- Cada disco tem um atributo (lógico) que mostra se ele foi movido para a esquerda.
- São 3 colunas, enumeradas de A a C, sendo A a coluna mais à esquerda e C a coluna mais à direita.
- A finalidade do problema é movimentar os discos da coluna A para a coluna C, com o maior disco na posição mais inferior da pilha e os outros posicionados de forma decrescente. Sem nunca ter um disco maior posicionado sobre um menor.
Vamos começar.
- Ler o estado atual da torre.
- Verificar se a coluna B está vazia. - Se a coluna B estiver vazia, mover o menor disco da coluna A para a B e desmarcar o disco como movido para esquerda. Retornar ao início. - Se a coluna B não estiver vazia, verificar se o disco da coluna B é maior que o disco da coluna A. - Se o disco da coluna B for maior que o da coluna A, verificar se o disco foi movido para a esquerda. - Se o disco tiver sido movido para a esquerda. mover o disco da coluna A pra a coluna B e desmarcar o disco da coluna A como movido para a esquerda. Retornar ao inicio. - Se o disco não tiver sido movido para a esquerda, verificar se a coluna C está vazia. - Se a coluna C estiver vazia , mover o disco da coluna B para a C. Retornar ao início. - Se a coluna C não estiver vazia, verificar se o disco da coluna C é menor que o da coluna B. - Se o disco da coluna C for menor que o da coluna B, mover o disco da coluna C para a B e marcar o disco como movido para a esquerda. Retornar ao início. - Se o disco da coluna C for maior que o da coluna B, mover o disco da coluna B para a coluna C. Retornar ao início. - Se o disco da coluna B for menor que