O Desafio – A Torre de Hanói!
A Lenda: o problema das torres de Hanói foi proposto pelo matemático francês Edouard Lucas, em 1883. Lucas elaborou para seu “invento” uma lenda curiosa sobre uma torre muito grande. A “torre de Brama”, que foi criada no “início dos tempos”, com três hastes contendo 64 discos concêntricos (mesmo centro). O “criador” do universo também criou uma comunidade de monges cuja única atividade seria mover os discos da haste original (“A”) para uma de destino (“C”). O “criador” estabeleceu que o mundo acabaria quando os monges terminassem sua tarefa. Porém, os monges deveriam respeitar as três regras para a sua execução.
É interessante observar que o número mínimo de "movimentos" para conseguir transferir todos os discos da primeira estaca à terceira é 2n-1, sendo n o número de discos.
Logo: Para solucionar um Hanói de 3 discos, são necessários 23 -1 movimentos = 7 movimentos.
Para solucionar um Hanói de 7 discos, são necessários 127 movimentos.
Para solucionar um Hanói de 15 discos, são necessários 32.767 movimentos.
Para solucionar um Hanói de 64 discos, como diz a lenda, são necessários 18.446.744.073.709.551.615 movimentos.
Usando um pouco de lógica e a ferramenta Matlab, você precisa escrever um algoritmo que solucione esse desfio!
Acompanhe, na imagem a seguir, as orientações.
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
Para escrever sua resposta aqui, entre ou crie uma conta
Lógica de Programação
•ESTÁCIO
Compartilhar