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... 2024

Vidéo: CHALLENGE : APPRENDRE LA PROGRAMMATION WEB en 1 Mois ! Html/css/js/jquery/bootstrap/php... 2024
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

Résolution des conflits de ressources humaines avec Microsoft Office Project 2007 - dummies

Résolution des conflits de ressources humaines avec Microsoft Office Project 2007 - dummies

Lorsqu'un membre de l'équipe de projet est suropposée dans votre projet Microsoft Office Project 2007, vous pouvez prendre des mesures pour corriger le problème en utilisant les suggestions suivantes. Gardez à l'esprit que les circonstances de votre projet déterminent si une solution particulière est réalisable. Par exemple, vous pouvez ajouter des ressources uniquement si votre budget le permet ...

Comment enregistrer plusieurs lignes de base dans Project 2013 - mannequins

Comment enregistrer plusieurs lignes de base dans Project 2013 - mannequins

Le concept de lignes de base multiples semble presque contraire définition d'une ligne de base. Après tout, le but d'une base de référence est de mettre l'enjeu proverbial dans le sable et de mesurer les progrès contre elle. Vous pouvez conserver plusieurs lignes de base dans Project 2013 à plusieurs fins. Considérez ces raisons: Vous avez un plan de base pour ...

Comment enregistrer une référence dans Project 2013 - mannequins

Comment enregistrer une référence dans Project 2013 - mannequins

Vous pouvez enregistrer une référence à tout moment en ouvrant la boîte de dialogue Définir la ligne de base dans Project 2013. Un paramètre - qui contrôle la manière dont le projet regroupe les données dans les tâches récapitulatives lorsque vous définissez une ligne de base pour une partie des tâches - nécessite une explication. Après avoir enregistré une base de données la première fois dans Project 2013, ...

Le choix des éditeurs

Comment classer les modèles d'analyse prédictive - mannequins

Comment classer les modèles d'analyse prédictive - mannequins

Vous avez plusieurs façons de classer les modèles utilisés pour l'analyse prédictive. En général, vous pouvez les trier en fonction des problèmes métier qu'ils résolvent et des principales fonctions métier qu'ils servent (ventes, publicité, ressources humaines ou gestion des risques, par exemple). L'implémentation mathématique utilisée dans le modèle (comme les statistiques, l'exploration de données et la machine ...

Comment appliquer n'importe quelle grappe de colonies dans l'analyse prédictive - les nuls

Comment appliquer n'importe quelle grappe de colonies dans l'analyse prédictive - les nuls

Un exemple naturel de groupe auto-organisateur vous pouvez appliquer dans le comportement d'analyse prédictive est une colonie de fourmis à la recherche de nourriture. Les fourmis optimisent collectivement leur trajectoire de manière à prendre toujours le chemin le plus court possible vers une cible alimentaire. Même si vous essayez de déranger une colonie de fourmis et de les empêcher de ...

Comment choisir un algorithme pour un modèle d'analyse prédictive - mannequins

Comment choisir un algorithme pour un modèle d'analyse prédictive - mannequins

Diverses statistiques, data-mining et des algorithmes d'apprentissage automatique sont disponibles pour votre modèle d'analyse prédictive. Vous êtes dans une meilleure position pour sélectionner un algorithme après avoir défini les objectifs de votre modèle et sélectionné les données sur lesquelles vous allez travailler. Certains de ces algorithmes ont été développés pour résoudre des problèmes métier spécifiques, améliorer des algorithmes existants ou fournir ...

Le choix des éditeurs

Excel Tableaux de bord et rapports: La fonction VLOOKUP - les nuls

Excel Tableaux de bord et rapports: La fonction VLOOKUP - les nuls

Ne vous feront rien tout bien si vous ne pouvez pas gérer efficacement vos modèles de données. La fonction VLOOKUP est le roi de toutes les fonctions de recherche dans Excel. Le but de VLOOKUP est de trouver une valeur spécifique à partir d'une colonne de données où la valeur de ligne la plus à gauche correspond à un critère donné. Prenez ...

Excel Outils d'analyse de données - dummies

Excel Outils d'analyse de données - dummies

L'outil d'analyse d'excel est un complément utile qui fournit un ensemble complet d'outils d'analyse statistique . Voici quelques outils dans le ToolPak. Outil Analyse Anova: Facteur unique Analyse de variance pour deux échantillons ou plus Anova: Facteur double avec réplication Analyse de la variance avec deux variables indépendantes et observations multiples ...

Excelent Touches de raccourci d'entrée de données - mannequins

Excelent Touches de raccourci d'entrée de données - mannequins

Lorsque vous travaillez dans Excel et saisissez des données dans une cellule, il est essentiel pour compléter l'entrée soit en cliquant sur une autre cellule avec le pointeur de la souris ou en utilisant l'une des touches de raccourci pratiques montrées ici pour déplacer le curseur de la cellule: Appuyez sur les touches To Arrow (& uarr;, & darr; move ...