Apprendre à programmer avec des cartes

Il s'agit d'écrire une procédure inverser_tas1 pour inverser l'ordre des tas du tas 1. Par exemple, si on a Tas 1:"TCCPK" alors après exécution de l'instruction inverser_tas1 (), on doit avoir Tas 1:"KPCCT".

Question

Faîtes-le avec l'hypothèse que les autres tas sont vides.

Solution

def inverser_tas1 () :

    while tas_non_vide(1) :

      deplacer_sommet(1,2)

    while tas_non_vide(2) :

      deplacer_sommet(2,3)

    while tas_non_vide(3) :

      deplacer_sommet(3,1)

Question

Réaliser la procédure sans supposer que les autres tas sont vides.

Indice

Une solution consiste à suivre l'algorithme

  1. vider le tas 1 sur le tas 2 en comptant le nombre n de cartes déplacée

  2. déplacer les n cartes se trouvant au sommet du tas 2 vers le tas 3

  3. déplacer les n cartes se trouvant au sommet du tas 3 vers le tas 1

Solution

def inverser_tas1 () :

    n = 0

    while tas_non_vide(1) :

      deplacer_sommet(1,2)

       n = n + 1

    for i in range [0,n] :

      deplacer_sommet(2,3)

    for i in range [0,n] :

      deplacer_sommet(3,1)

PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Laetitia Jourdan, Éric Wegrzynowski, Léopold Weinberg. FIL - IEEA - Univ. Lille1. http://www.fil.univ-lille1.fr Paternité - Pas d'Utilisation CommercialeRéalisé avec Scenari (nouvelle fenêtre)