Lar Finanças Pessoais Java Programação Desafio: Recuperando as Torres de Hanoi - dummies

Java Programação Desafio: Recuperando as Torres de Hanoi - dummies

Vídeo: 8. Arboles - DrRacket 2024

Vídeo: 8. Arboles - DrRacket 2024
Anonim

Este desafio ajuda você a usar seus talentos de programação para escrever um programa Java que imprimirá as etapas necessárias para resolver um enigma de Towers of Hanoi, dado o número de discos.

The Towers of Hanoi é um enigma de lógica clássico que consiste em três cavilhas verticais e uma série de discos de vários diâmetros. Cada disco tem um orifício no centro, permitindo que os discos sejam deslizados sobre as cavilhas.

O quebra-cabeça começa com todos os discos empilhados em uma das cavilhas, com o maior disco na parte inferior e o menor no topo. O objeto do quebra-cabeça é mover a pilha de discos para uma das outras cavilhas, obedecendo apenas duas regras simples: (1) você pode mover apenas um disco por vez, e (2) você nunca pode colocar um disco maior topo de um menor.

A figura a seguir mostra a solução para uma pilha de três discos. Como você pode ver, a solução requer sete movimentos:

  1. Mover o disco 1 de Peg 1 para Peg 3.

  2. Mover o disco 2 do Peg 1 para o Peg 2.

  3. Mover o disco 1 do Peg 3 para o Peg 2.

  4. Mover o Disco 3 do Peg 1 para o Peg 3.

  5. Mover o Disco 1 do Peg 2 para o Peg 1.

  6. Mover o Disco 2 do Peg 2 para o Peg 3.

  7. Mover o disco 1 de Peg 1 para Peg 3.

Após estes sete passos, a pilha de discos estará no Peg 3.

A solução para o quebra-cabeça Towers of Hanoi com três discos.

O quebra-cabeça fica interessante quando você começa a adicionar discos à posição inicial. Com três discos, o quebra-cabeça requer apenas 7 movimentos para resolver. Com quatro discos, são necessários 15 movimentos. Com cinco discos, você precisará de 31 movimentos. Seis discos requerem 64 movimentos.

Se você seguiu a matemática, o número de movimentos necessários para resolver o quebra-cabeça aumenta exponencialmente à medida que o número de discos aumenta. Especificamente, o número de movimentos necessários para mover os discos n é 2 n - 1. Por exemplo, uma pilha de 20 discos exigirá 2 20 - 1 movimentos; Isso é mais de um milhão de movimentos!

Uma legenda interessante está associada ao quebra-cabeça: em um templo em Hanói, os monges trabalharam em um puzzle Towers of Hanoi com 64 discos desde a criação da Terra. Quando terminem, o mundo chegará ao fim. Felizmente, temos muito tempo para esperar: se os monges podem mover um disco por segundo, serão mais 580 bilhões de anos antes de terminar o quebra-cabeça.

Seu desafio é simples: escreva um programa Java que imprimirá as etapas necessárias para resolver um puzzle Towers of Hanoi dado o número de discos. O programa deve primeiro solicitar ao usuário o número de discos. Em seguida, deve exibir os passos, um por linha.Cada passo deve indicar a qual pega para mover um disco e para qual pega para mover o disco. As etapas também devem ser numeradas seqüencialmente.

Uma vez terminado, o programa deve repetir, perguntando ao usuário o número de discos novamente. O programa deve terminar quando o usuário entrar 0.

Aqui está uma amostra da saída do console que seu programa deve gerar:

Quantos discos? (0 a fim) 3 1: 1 a 3 2: 1 a 2 3: 3 a 2 4: 1 a 3 5: 2 a 1 6: 2 a 3 7: 1 a 3 Quantos discos ? (0 a fim) 0

O único outro requisito para resolver esse desafio é que sua solução deve usar a programação recursiva. Em outras palavras, sua solução deve incluir um método que se chame a resolver o enigma.

A programação recursiva pode ser desafiadora, então aqui estão algumas dicas para a solução deste quebra-cabeça:

  • O quebra-cabeça consiste em três cavilhas. Um deles contém a pilha inicial de discos; chame essa peg a fonte peg . Uma das duas pinos restantes é a peça em que você deseja mover a pilha de discos; chame essa peg a alvo peg . A terceira peg está disponível para você usar como uma peg intermediária para armazenar discos temporariamente quando você os move. Ligue para esta peça a pedaço sobressalente .

  • O seu método recursivo deve aceitar três parâmetros: o número de discos a serem movidos, a ligação da fonte e a captura de destino. Use os valores inteiros 1, 2 e 3 para representar as cavilhas.

  • A idéia básica de resolver o enigma de forma recursiva é a seguinte: mover uma pilha de discos de uma cavilha de origem para uma pegada de destino requer três etapas:

    1. Mover todos os discos na pilha, exceto o disco inferior para o Pegada sobressalente.

    2. Mova o disco maior na pilha original para o peg de destino.

    3. Mova a pilha que você moveu no Passo 1 da pegada sobressalente para a cavilha de destino.

  • Claro, as regras do quebra-cabeça permitem que você mova apenas um disco por vez, então você não pode realizar os passos 1 e 3 do procedimento fornecido aqui, simplesmente, pegando a pilha e movendo-a. É aí que a recursão entra. Para os Passos 1 e 3, você chama o método de forma recursiva, cada vez que especifica um disco menor para ser movido, e cada vez que usa a pegada de destino anterior como a pegada de reposição.

  • Perguntando por que o método recursivo não precisa aceitar a pegada sobressalente como argumento? Porque você pode calculá-lo facilmente, tendo em conta as cavilhas de origem e de destino. Uma vez que existem apenas três cavilhas, numeradas 1, 2 e 3, a soma das três cavilhas é 6 (1 + 2 + 3). Dado os pinos de origem e de destino, você pode calcular a pegada de reposição subtraindo a cavilha de origem e de destino de 6. Por exemplo, se a cavilha de fonte for 1 e a cavilha de destino for 3, a cavilha de reposição deve ser 2 porque

    6 - 3 - 1 = 2.

Para a solução, vá para a guia Downloads da página de produtos Java All-in-One For Dummies, 4th Edition.

Boa sorte!

Java Programação Desafio: Recuperando as Torres de Hanoi - dummies

Escolha dos editores

Acalma suas emoções ao praticar Mindfulness - dummies

Acalma suas emoções ao praticar Mindfulness - dummies

Aqui, você descobre a maneira consciente de gerenciar as emoções - as etapas para tome quando estiver sentindo baixo, excessivamente irritado ou desconfortavelmente ansioso. As emoções positivas podem ser um sentimento maravilhoso. A alegria, a alegria, a emoção e a felicidade são perfeitas. Mas como você pode lidar com as chamadas emoções negativas? Use a atenção para a saúde emocional A atenção plena está se tornando ...

Como começar o seu dia de trabalho com meditação Mindfulness - dummies

Como começar o seu dia de trabalho com meditação Mindfulness - dummies

Você pode encontrar a meditação mindfulness é uma ótima maneira de Comece o seu dia de trabalho. Quando chegar ao trabalho pela manhã, talvez já esteja estressado. Depois de uma agitada hora ou duas preparando as crianças para a escola ou regatear com seu parceiro ou lidar com alguma emergência em casa, seguido de ...

Os melhores sites Mindfulness - dummies

Os melhores sites Mindfulness - dummies

, Independentemente de você morar no Reino Unido ou em outro lugar, se você procurar "mindfulness" 'on-line, você literalmente obterá milhões de resultados. Como você pode dizer o trigo da palha? Aqui estão alguns sites que você achará útil. Atento. Este recurso maravilhoso tem muitos conteúdos de alta qualidade de professores excelentes de atenção plena. O ...

Escolha dos editores

HDR Solução de problemas: Nada está funcionando - manequins

HDR Solução de problemas: Nada está funcionando - manequins

Quando você se depara com uma situação com suas fotografias de alcance dinâmico elevado e parece que nada que você está fazendo está funcionando - as configurações não parecem boas, a imagem parece errada, os efeitos são ruins - relaxe e faça uma pausa. A imagem está lhe dizendo algo. Que algo às vezes é relacionado a forçar ...

HDR Resolução de problemas: falta de imaginação - dummies

HDR Resolução de problemas: falta de imaginação - dummies

A imaginação é uma coisa poderosa ao preparar imagens HDR, fato que é tornou-se mais óbvio quando você vê o resultado de não usá-lo versus usá-lo. A imagem superior desta figura é uma imagem HDR de um diner local durante a "hora dourada" - naquele horário atrasado (ou manhã) quando ...

HDR Solução de problemas: Sharpening - dummies

HDR Solução de problemas: Sharpening - dummies

Se você ficar apanhado na perfeição, você está preparado para aumentar seu HDR imagens. Os fotógrafos às vezes estão obcecados com a nitidez em suas fotos. Eles querem que tudo seja pixelly perfeitamente afiado do nariz da câmera até o infinito, independentemente da lente, abertura, ISO ou velocidade do obturador que eles usem. Esta figura mostra os resultados ...

Escolha dos editores

Cisco Rede: Mostrar comando de versão em um Switch - dummies

Cisco Rede: Mostrar comando de versão em um Switch - dummies

Em qualquer componente de rede da Cisco, o show O comando de versão é aplicável a qualquer hardware usando o Sistema Operacional Cisco IET (Internetwork Operating System), incluindo switches. O comando show version mostra informações ligeiramente diferentes, de acordo com o tipo de dispositivo em que você usa. Veja a saída do comando show version em um switch e ...

Cisco Rede: Modo de operação EXEC privilegiado - manequins

Cisco Rede: Modo de operação EXEC privilegiado - manequins

Você precisa usar o modo EXEC privilegiado se quiser realmente tem acesso de atualização a um sistema de rede Cisco,. Para entrar neste modo no modo EXEC do usuário, emita o comando enable, que solicita uma senha, se configurado. Como o nome do modo sugere, este modo tem privilégios extras para permitir ...

Cisco Rede: Configuração de Senha de Shell Seguro (SSH) - manequins

Cisco Rede: Configuração de Senha de Shell Seguro (SSH) - manequins

Shell seguro (SSH) é um protocolo de rede para seus dispositivos Cisco, que é mais seguro do que o Telenet. Definir uma senha segura é um requisito de configuração para este protocolo. Para configurar o acesso a um switch Cisco para SSH, você precisará ter uma conta de usuário criada em sua opção. O exemplo supõe que você tenha ...