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

Passez les examens en améliorant votre mentalité de performance - les nuls

Passez les examens en améliorant votre mentalité de performance - les nuls

Quels que soient les sujets que vous étudiez, êtes à l'école secondaire, au collège, à l'université, ou face à des examens professionnels ou d'entrée, pour passer vos examens, vous devez développer votre esprit de performance d'examen. Faire cela vous aidera à: Développer une attitude d'excellence - toujours viser à atteindre votre meilleur rendement personnel. Décidez exactement de ce que ...

Réussir les examens commence le premier jour de classe - les tirs

Réussir les examens commence le premier jour de classe - les tirs

Sont faciles à supposer aller à des cours, des conférences, des tutoriels ou autres, votre préparation aux examens sera dans quelques mois. Cette hypothèse, cependant, n'est pas utile. Si vous pensez que la préparation aux examens fait partie de chaque cours tous les jours - pas seulement les dernières semaines avant les examens - vous ...

Pour mémoriser l'ordre des opérations du PSAT / NMSQT - mannequins

Pour mémoriser l'ordre des opérations du PSAT / NMSQT - mannequins

L'ordre mathématique des opérations est très important sur les sections mathématiques du PSAT / NMSQT. S'il vous plaît excusez ma chère tante Sally (PEMDAS) est un moyen mnémotechnique (aide-mémoire) qui vous aide à vous rappeler quelle opération vient en premier, qui vient en second lieu, et ainsi de suite. L'ordre compte parce que si vous ignorez tante Sally, vous vous retrouvez avec la mauvaise réponse. ...

Le choix des éditeurs

10 Bonnes façons d'utiliser Bitcoin - les nuls

10 Bonnes façons d'utiliser Bitcoin - les nuls

Si vous voulez utiliser le bitcoin comme une forme d'éducation monétaire virtuelle, Utilisez-le comme un revenu supplémentaire, ou regardez-le dans une perspective d'investissement, bitcoin vous permet de faire à peu près tout ce que vous pouvez imaginer. Voici dix des meilleures façons d'utiliser Bitcoin, même s'il y en a beaucoup, beaucoup ...

Bitcoin Clés publiques et privées - nuls

Bitcoin Clés publiques et privées - nuls

Il y a plus qu'un portefeuille bitcoin que juste l'adresse elle-même. Il contient également la clé publique et privée pour chacune de vos adresses bitcoin. Votre clé privée bitcoin est une chaîne générée aléatoirement (chiffres et lettres), permettant de dépenser des bitcoins. Une clé privée est toujours liée mathématiquement à l'adresse du porte-monnaie bitcoin, ...

Bitcoin Paper Wallets - mannequins

Bitcoin Paper Wallets - mannequins

Possédant un portefeuille papier bitcoin, l'adresse contenant les bitcoins n'a pas encore été connectée au live blockchain, et n'est donc pas "active". "Jusqu'à ce que le portefeuille soit connecté à la blockchain, il est considéré comme étant en stockage à froid (jargon bitcoin pour un compte hors ligne). Vous pouvez toujours vérifier le solde ...

Le choix des éditeurs

Comment lire les données d'Excel en R - dummies

Comment lire les données d'Excel en R - dummies

Si vous demandez aux utilisateurs de R quelle est la meilleure façon est d'importer des données directement à partir de Microsoft Excel, la plupart d'entre eux répondront probablement que votre meilleure option est d'exporter d'abord Excel vers un fichier CSV, puis utiliser lire. csv () pour importer vos données à R. En fait, c'est toujours le conseil ...

Comment lire les erreurs et les avertissements dans R - dummies

Comment lire les erreurs et les avertissements dans R - dummies

Si quelque chose ne va pas avec votre code, toi. Nous devons l'admettre: Ces messages d'erreur peuvent aller de légèrement confus à complètement incompréhensible si vous n'y êtes pas habitué. Mais ça ne doit pas rester comme ça. Lorsque vous vous serez familiarisé avec les messages d'erreur et d'avertissement de R, vous pourrez rapidement ...

Comment lire la sortie de str () pour les listes dans R - dummies

Comment lire la sortie de str () pour les listes dans R - dummies

Beaucoup de gens qui commencent par R sont déroutés par les listes au début. Il n'y a vraiment pas besoin de cela - une liste n'a que deux parties importantes: les composants et les noms. Et dans le cas des listes sans nom, vous n'avez même pas à vous soucier de ce dernier. Mais si vous regardez la structure ...