class Maya:
def __init__(self):
self.nombre = []
def ajouter(self, chiffre):
""" chiffre est une liste de longueur 3.
La méthode empile le chiffre au sommet de la pile """
self.nombre.append(chiffre)
def retirer(self):
""" depile et renvoie le chiffre qui etait au sommet de
la pile """
if not self.estVide():
return self.nombre.pop()
def estVide(self):
return self.nombre == []
def nbEtages(self):
""" renvoie le nombre de chiffres de la pile """
return len(self.nombre)
def MayaToDec(self):
""" renvoie le nombre entier correspondant a la
modelisation Maya de l'instance courante """
coeff = 20**(self.nbEtages() - 1)
ch_Dec = 0
while not self.estVide() :
ch_Maya = self.retirer()
ch_Dec = ch_Dec + (valeurChiffre(ch_Maya)) * coeff
coeff = coeff // 20
return ch_Dec
def multiplie(self):
""" renvoie le resultat de la multiplication par 20 d'un
nombre en modelisation Maya. """
result = Maya()
result.nombre = [[1,0,0]] + self.nombre
return result
def somme(self, maya2):
""" ajoute maya2 à l'instance courante et renvoie le
resultat en modelisation Maya """
if self.nbEtages() != maya2.nbEtages():
return None
result = Maya()
ret = 0
while not self.estVide():
ch1 = self.retirer()
ch2 = maya2.retirer()
ch_somme, ret = mystere(ch1, ch2, ret)
result.ajouter(ch_somme)
return result
def valeurChiffre(L):
return L[1] + 5 * L[2]
M = Maya()
M.ajouter([0,0,3])
M.ajouter([0,1,2])
M.ajouter([0,3,1])
print( M.MayaToDec() )