Buscar

Como seria o algoritmo usando o Matlab?

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.


💡 1 Resposta

User badge image

caique prette

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


1
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta

User badge image

Outros materiais