1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| # -*- coding: iso8859-1 -*-
class c1Tour :
def __init__ (self, hauteur) :
self.hauteur_max = hauteur
self.disques =[]
def remplir(self) :
self.disques = range(1, self.hauteur_max+1)
self.disques.reverse()
def sommet(self) :
if ( len(self.disques) > 0 ) :
return self.disques[-1]
else :
return 0
def disque(self, etage) :
if ( etage <= len(self.disques) ) :
return self.disques[etage-1]
else :
return 0
def nbDisques(self) :
return len(self.disques)
def transferer(self, vers_tour) :
if (len(self.disques) > 0 ) :
if ( (self.sommet() < vers_tour.sommet()) or \
(vers_tour.nbDisques() == 0) ) :
vers_tour.disques.append(self.sommet())
del self.disques[-1]
else :
print "Impossible d'empiler un disque sur un plus petit."
else :
print "Tour vide, rien à transférer."
import hanoi
hanoi.py:
t1 = hanoi.c1Tour(5)
t1.remplir()
print "t1 =", t1.disques
t2 = hanoi.c1Tour(5)
print "t2 =", t2.disques
t2.transferer(t1)
t1.transferer(t2)
print "t1 +", t1.disques, "t2 =", t2.disques |