Elabore uma sequência que mova três discos de uma Torre de Hanói, que consiste em três hastes (a-b-c), uma das quais serve de suporte para três discos de tamanhos diferentes (1-2-3), os menores sobre os maiores. Pode-se mover um disco de cada vez para qualquer haste, contanto que nunca seja colocado um disco maior sobre um menor. O objetivo é transferir os três discos para outra haste
Soluções para a tarefa
Resposta:
informações:
3 discos
3 hastes
ações:
movimentar um disco de cada vez de forma que fiquem ordenado
resultado:
discos transferidos e ordenados para outra haste
Algoritmo:
início
mover o disco 1 para a haste b
mover o disco 2 para a haste c
mover o disco 1 para a haste c
mover o disco 3 para a haste b
mover o disco 1 para a haste a
mover o disco 2 para a haste b
mover o disco 1 para a haste b
fim
Padrão de resposta esperado
O algoritmo poderia ser descrito da seguinte forma:
Em um script separado, salve-o com o nome de torre.m
function torre(n, init, temp, fin)
if n == 1
disp([init ' to ' fin])
else
torre(n-1,init, fin,temp);
torre(1,init, temp, fin);
torre(n-1,temp, init,fin);
end
Em outro arquivo (script), você pode entrar com o seguinte comando, chamando a função:
clc, clear;
num = input('Torre de Hanoi: Informe o numero de discos:\n');
fprintf('\n\n');
torre(num,'A','B','C');
fprintf('\n\n');
Esse comando retorna os seguintes valores de resultados:
A to C
A to B
C to B
A to C
B to A
B to C
A to C