import os os.chdir("/media/eleve/1B2E-2F4E/MPx/") from piles import * import random import labyrinthe as laby def copie(pile): els = Pile() out = Pile() while not pile.estPileVide(): els.empiler(pile.depiler()) while not els.estPileVide(): x = els.depiler() out.empiler(x) pile.empiler(x) return out Pile.copie = copie """ Complexité temporelle, avec n la longueur de la pile: O(n) Complexité spaciale, avec n la taille de la pile: O(n) """ def miroir(pile): deca = pile.copie() out = Pile() while not deca.estPileVide(): out.empiler(deca.depiler()) return out Pile.miroir = miroir """ O(n) O(n) """ def taille(pile): deca = pile.copie() i = 0 while not deca.estPileVide(): i+=1 deca.depiler() return i Pile.taille = taille """ O(n) O(n) """ def nth(pile,n): t = pile.taille() deca = pile.copie() i = 0 while not deca.estPileVide(): i+=1 if i==t-n: return deca.depiler() deca.depiler() raise IndexError("La pile est trop petite !") Pile.nth = nth """ O(n) O(n) """ def degringoler(pile): if pile.estPileVide(): raise IndexError("Mais ……… cette pile est vide !") x0 = pile.depiler() deca = Pile() while not pile.estPileVide(): deca.empiler(pile.depiler()) pile.empiler(x0) while not deca.estPileVide(): pile.empiler(deca.depiler()) Pile.degringoler = degringoler """ O(exp(42*n)) non, bien sur, c'est du O(n) O(n) """ def toList(pile): deca = pile.copie() out=[] while not deca.estPileVide(): out.append(deca.depiler()) return out Pile.toList = toList print("----------------------------") print("Essai de la (nouvelle) classe pile") p = Pile() p.empiler(1) p.empiler(2) print(p) p.depiler() print(p) p.depiler() print(p) p.empiler('*') p.empiler('p') p.empiler('m') print(p) print(p.nth(0)) print(p.nth(1)) print(p.nth(2)) print(p.miroir()) p.empiler(1) print(p) print("----------------------------") ### Labyrinthes def estValide(i,j,n,p): return (0<=i and i