Accueil Finances personnelles Défi programmation java: Récursoires des tours de Hanoi - mannequins

Défi programmation java: Récursoires des tours de Hanoi - mannequins

Vidéo: CHALLENGE : APPRENDRE LA PROGRAMMATION WEB en 1 Mois ! Html/css/js/jquery/bootstrap/php... 2025

Vidéo: CHALLENGE : APPRENDRE LA PROGRAMMATION WEB en 1 Mois ! Html/css/js/jquery/bootstrap/php... 2025
Anonim

Ce défi vous aide à utiliser vos talents de programmeur pour écrire un programme Java qui imprimera les étapes nécessaires pour résoudre un puzzle de Tours de Hanoi étant donné le nombre de disques.

Les Tours de Hanoi est un puzzle de logique classique composé de trois piquets verticaux et d'un certain nombre de disques de différents diamètres. Chaque disque a un trou au centre, permettant aux disques d'être glissés sur les piquets.

Le puzzle commence avec tous les disques empilés sur l'un des pions, avec le plus gros disque en bas et le plus petit en haut. L'objet du puzzle est de déplacer la pile de disques vers l'un des autres pions, en obéissant à deux règles simples: (1) vous ne pouvez déplacer qu'un seul disque à la fois, et (2) vous ne pouvez jamais placer un disque plus grand sommet d'un plus petit.

La figure suivante montre la solution pour une pile de trois disques. Comme vous pouvez le voir, la solution nécessite sept déplacements:

  1. Déplacer le disque 1 de Peg 1 à Peg 3.

  2. Déplacer le disque 2 de Peg 1 vers Peg 2.

  3. Déplacer le disque 1 de Peg 3 vers Peg 2.

  4. Déplacer le disque 3 de Peg 1 à Peg 3.

  5. Déplacer le disque 1 de Peg 2 vers Peg 1.

  6. Déplacer le disque 2 de Peg 2 vers Peg 3.

  7. Déplacer le disque 1 de Peg 1 à Peg 3.

Après ces sept étapes, la pile de disques sera sur Peg 3.

La solution pour le puzzle des Tours de Hanoi avec trois disques.

Le puzzle devient intéressant lorsque vous commencez à ajouter des disques à la position de départ. Avec trois disques, le puzzle nécessite seulement 7 mouvements à résoudre. Avec quatre disques, 15 coups sont nécessaires. Avec cinq disques, vous aurez besoin de 31 coups. Six disques nécessitent 64 mouvements.

Si vous avez suivi les maths, le nombre de mouvements requis pour résoudre le puzzle augmente exponentiellement à mesure que le nombre de disques augmente. Plus précisément, le nombre de déplacements requis pour déplacer les disques n est 2 n - 1. Par exemple, une pile de 20 disques nécessitera 2 20 - 1 coups; c'est plus d'un million de coups!

Une légende intéressante est associée à l'énigme: Dans un temple de Hanoi, des moines ont travaillé sur un puzzle de tours de Hanoi avec 64 disques depuis la création de la terre. Quand ils auront fini, le monde prendra fin. Heureusement, nous avons beaucoup de temps à attendre: si les moines peuvent déplacer un disque par seconde, il faudra encore 580 milliards d'années avant de finir le puzzle.

Votre défi est simple: Écrivez un programme Java qui imprimera les étapes nécessaires pour résoudre un puzzle de Tours de Hanoi étant donné le nombre de disques. Le programme devrait d'abord demander à l'utilisateur le nombre de disques. Ensuite, il devrait afficher les étapes, une par ligne.Chaque étape doit indiquer le point d'ancrage à partir duquel un disque doit être déplacé et le point d'ancrage dans lequel le disque doit être déplacé. Les étapes doivent également être numérotées séquentiellement.

Une fois terminé, le programme devrait répéter, en demandant de nouveau à l'utilisateur le nombre de disques. Le programme devrait se terminer lorsque l'utilisateur entre 0.

Voici un exemple de sortie de console que votre programme devrait générer:

Combien de disques? (0 à la fin) 3 1: 1 à 3 2: 1 à 2 3: 3 à 2 4: 1 à 3 5: 2 à 1 6: 2 à 3 7: 1 à 3 Combien de disques ? (0 à la fin) 0

La seule autre exigence pour résoudre ce problème est que votre solution utilise une programmation récursive. En d'autres termes, votre solution doit inclure une méthode qui s'appelle pour résoudre le puzzle.

La programmation récursive peut être difficile, alors voici quelques astuces pour résoudre ce puzzle:

  • Le puzzle se compose de trois chevilles. L'un d'eux contient la pile de disques de départ; appelez cette pince la source peg . L'une des deux autres chevilles est la cheville à laquelle vous voulez déplacer la pile de disques; Appelez cette cheville cheville cible . Le troisième ancrage est disponible pour que vous puissiez l'utiliser en tant que piquet intermédiaire pour stocker des disques temporairement lorsque vous les déplacez. Appelez cette cheville pièce de rechange .

  • Votre méthode récursive doit accepter trois paramètres: le nombre de disques à déplacer, le point d'ancrage source et le point d'ancrage cible. Utilisez les valeurs entières 1, 2 et 3 pour représenter les chevilles.

  • L'idée de base de la résolution récursive du puzzle est la suivante: Pour déplacer une pile de disques d'une cheville source vers une cheville cible, trois étapes sont nécessaires:

    1. Déplacez tous les disques de la pile à l'exception du disque inférieur pince de rechange.

    2. Déplacez le plus gros disque de la pile d'origine vers le repère cible.

    3. Déplacez la pile que vous avez déplacée à l'étape 1 de la cheville libre vers la cheville cible.

  • Bien sûr, les règles de puzzle vous permettent de déplacer un seul disque à la fois, donc vous ne pouvez pas accomplir les étapes 1 et 3 de la procédure donnée en récupérant simplement la pile et en la déplaçant. C'est là qu'intervient la récurrence. Pour les étapes 1 et 3, vous appelez la méthode de manière récursive, en spécifiant à chaque fois un disque de moins à déplacer, et en utilisant à chaque fois la cible précédente comme pièce de rechange.

  • Vous vous demandez pourquoi la méthode récursive n'a pas besoin d'accepter le rattachement de rechange comme argument? Parce que vous pouvez facilement le calculer, étant donné les piquets source et cible. Comme il n'y a que trois pions, numérotés 1, 2 et 3, la somme des trois pions est 6 (1 + 2 + 3). Étant donné les points d'ancrage source et cible, vous pouvez calculer l'ancrage de réserve en soustrayant les points source et cible de 6. Par exemple, si le point d'origine est 1 et le point d'ancrage cible est 3, la point d'ancrage doit être 2 car

    6 - 3 - 1 = 2.

Pour la solution, accédez à l'onglet Téléchargements de la page du produit Java Tout-en-un pour les nuls, 4e édition.

Bonne chance!

Défi programmation java: Récursoires des tours de Hanoi - mannequins

Le choix des éditeurs

Conventions de dénomination pour Ruby on Rails - mannequins

Conventions de dénomination pour Ruby on Rails - mannequins

Vous utilisez Ruby on Rails pour créer un site Web application ou application de base de données Web, ce qui est très intelligent de votre part. En fonction de ce que vous utilisez (une application, une relation un-à-plusieurs ou une relation plusieurs-à-plusieurs), vous utilisez différentes variantes des protocoles d'attribution de noms Rails, qui sont expliquées dans les sections suivantes. Ruby Naming for ...

En orbite, panoramique et zoom dans la vue 3D de Blender - mannequins

En orbite, panoramique et zoom dans la vue 3D de Blender - mannequins

En essayant de naviguer dans un espace en trois dimensions à travers un écran bidimensionnel comme un écran d'ordinateur, vous ne pouvez pas interagir avec cet espace 3D virtuel exactement comme vous le feriez dans le monde réel, ou espace de vie. La meilleure façon de visualiser le travail en 3D à travers un programme comme Blender est d'imaginer la vue 3D comme vos yeux ...

Déplacement de clips sur la timeline dans Final Cut Pro HD - Ficelles

Déplacement de clips sur la timeline dans Final Cut Pro HD - Ficelles

Final Cut Pro HD Timeline vous permet d'organiser tous vos clips vidéo et audio afin qu'ils racontent l'histoire que vous voulez raconter. Pour comprendre le fonctionnement de la Timeline, imaginez-la comme une page de partitions, mais plutôt que de placer des notes de musique de différentes durées (noires, demi-notes, ...

Le choix des éditeurs

Contrôle et modification de l'associativité des dimensions dans AutoCAD - Dummies

Contrôle et modification de l'associativité des dimensions dans AutoCAD - Dummies

Lorsque vous ajoutez des dimensions en sélectionnant des objets ou en utilisant l'accrochage aux objets Pour sélectionner des points sur les objets, AutoCAD crée normalement des dimensions associatives, qui sont connectées aux objets et se déplacent avec eux. C'est le cas dans les nouveaux dessins créés à l'origine dans toute version d'AutoCAD à partir de 2002. Si vous ...

Copie de styles de cote existants dans AutoCAD 2008 - mannequins

Copie de styles de cote existants dans AutoCAD 2008 - mannequins

Si vous avez la chance de travailler dans un bureau Quelqu'un a mis en place des styles de cotes qui conviennent à votre secteur d'activité et à votre projet. Vous pouvez le copier et ainsi éviter de devoir créer vos propres styles de cote. (Un style de cote - ou dimstyle pour faire court - est une collection de paramètres de dessin appelée dimension ...

En choisissant un style d'édition AutoCAD -

En choisissant un style d'édition AutoCAD -

Dans AutoCAD vous passez généralement plus de temps à éditer que dessiner des objets. C'est en partie parce que le processus de conception et de rédaction est, par nature, sujet à des changements, et aussi parce que AutoCAD vous permet de modifier facilement les objets proprement. AutoCAD propose trois styles d'édition: Commande-première Sélection-première Objet-direct (poignée) AutoCAD fait référence à l'édition de commandes comme verbe-nom ...

Le choix des éditeurs

Praxis Examen d'éducation élémentaire - Présentations orales - mannequins

Praxis Examen d'éducation élémentaire - Présentations orales - mannequins

Parce que les élèves doivent généralement donner des présentations orales en classe , vous rencontrerez probablement une question sur ce sujet dans l'examen Praxis Elementary Education. Plus formelles que les discussions de groupe, les présentations orales ont leurs propres règles pour le conférencier. Lorsque vous donnez une présentation en classe, il y a plusieurs ...

Praxis Examen d'éducation élémentaire - Littérature et texte d'information - mannequins

Praxis Examen d'éducation élémentaire - Littérature et texte d'information - mannequins

L'examen Praxis Elementary Education sur la littérature et le texte d'information, c'est-à-dire la fiction et la non-fiction. Vous devrez donc vous familiariser avec les différents genres d'écriture. La compréhension du texte est un processus qui se produit au fil du temps.

Praxis Examen d'éducation élémentaire - Connaissance phonologique - mannequins

Praxis Examen d'éducation élémentaire - Connaissance phonologique - mannequins

Vous rencontrerez probablement une ou deux questions qui impliquent des questions phonologiques sensibilisation à l'examen Praxis Elementary Education. La conscience phonologique est une compétence large impliquant la reconnaissance de son. Les lecteurs débutants commencent par apprendre les sons individuels, ou phonèmes, dans des mots parlés. Par exemple, le mot chat a trois phonèmes: / c / / a / / t /. Un lecteur débutant apprend ...