Pouknouki

Exercices pile

Oct 14th, 2016
295
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.95 KB | None | 0 0
  1. import os
  2. os.chdir("/home/eleve/Bureau/")
  3. from materiel import *
  4.  
  5. def pileListe(liste):
  6.     p = Pile()
  7.     while len(liste) > 0:
  8.         p.empiler(liste.pop())
  9.     return p
  10.  
  11. def pileDefaut():
  12.     pile = Pile()
  13.     pile.empiler(1)
  14.     pile.empiler(2)
  15.     pile.empiler(3)
  16.     pile.empiler(4)
  17.     return pile
  18.  
  19. # EXERCICE 1
  20.  
  21. def inverser_pile(pile):
  22.     renvoye = Pile()
  23.     sauvegarde = Pile()
  24.     while not pile.est_vide():
  25.         sommet = pile.pop()
  26.         sauvegarde.empiler(sommet)
  27.         renvoye.empiler(sommet)
  28.     while not sauvegarde.est_vide():
  29.         pile.empiler(sauvegarde.pop())
  30.     pile = sauvegarde
  31.     return renvoye
  32.    
  33. def desempiler(pile, k):
  34.     while not pile.est_vide() and k > 0:
  35.         pile.desempiler()
  36.         k -= 1
  37.     #return pile
  38.  
  39. def desempilerJusqu(pile, e):
  40.     while not pile.est_vide() and pile.pop() != e:
  41.         pass
  42.     #return pile
  43.  
  44. def perm2(pile):
  45.     top, top2 = pile.pop(), pile.pop()
  46.     pile.empiler(top)
  47.     pile.empiler(top2)
  48.     #return pile # ?
  49.  
  50. def rot(pile, k):
  51.     elements = []
  52.     i = k
  53.     for i in range(k - 1):
  54.         perm2(pile)
  55.         elements.append(pile.pop())
  56.     while i < k:
  57.         pile.empiler(elements.pop())
  58.         i += 1
  59.  
  60. # EXERCICE 2
  61.  
  62. def taillePile(pile):
  63.     paux = Pile()
  64.     renvoye = 0
  65.     while not pile.est_vide():
  66.         renvoye += 1
  67.         paux.empiler(pile.pop())
  68.     for i in range(renvoye):
  69.         pile.empiler(paux.pop())
  70.     return renvoye
  71.    
  72. # EXERCICE 3
  73.  
  74. def couper(pile):
  75.     import random
  76.     elts = random.randint(1, taillePile(pile) - 1)
  77.     paux = Pile()
  78.     for i in range(elts):
  79.         paux.empiler(pile.pop())
  80.     paux = inverser_pile(paux)
  81.     return paux
  82.  
  83. def melange(p1, p2):
  84.     t = (p1, p2)
  85.     renvoye = Pile()
  86.     import random
  87.     while not p1.est_vide() and not p2.est_vide():
  88.         renvoye.empiler(t[random.randint(0, 1)].pop())
  89.     while not p1.est_vide():
  90.         renvoye.empiler(p1.pop())
  91.     while not p2.est_vide():
  92.         renvoye.empiler(p2.pop())
  93.     return renvoye
  94.  
  95. pile = pileListe([1, 2, 3, 4, 5])
  96. pile2 = pileListe([5, 6, 7, 8, 9, 10])
  97.  
  98. def magiemagie(k = 2, n = 32):
  99.     cartes = Pile()
  100.     import copy
  101.     N = copy.deepcopy(cartes_noires)
  102.     R = copy.deepcopy(cartes_rouges)
  103.     random.shuffle(R)
  104.     random.shuffle(N)
  105.     for i in range(n // k):
  106.         cartes.empiler(N.pop())
  107.         cartes.empiler(R.pop())
  108.     cartes2 = couper(cartes)
  109.     print(melange(cartes2, cartes))
  110.  
  111. print(infixe_to_postfixe('3*(4+2)-3/5'))
  112.  
  113. def calculer(a, b, op):
  114.     if op == '+':
  115.         return a + b
  116.     elif op == '-':
  117.         return a - b
  118.     elif op == '/':
  119.         return a / b
  120.     elif op == '*':
  121.         return a * b
  122.     assert False, "Mauvais opérateur : " + str(op)
  123.  
  124. def calculNPI(npi):
  125.     operandes = ['+', '-', '/', '*']
  126.     p = Pile()
  127.     resultat = 0
  128.     for elt in npi:
  129.         p.empiler(elt)
  130.         if elt in operandes:
  131.             op, b, a = p.pop(), p.pop(), p.pop()
  132.             p.empiler(calculer(a, b, op))
  133.     return p.pop()
  134.  
  135. calculNPI(infixe_to_postfixe('10+(4*8)-7*5+18'))
  136.  
  137. def obtenirSecret():
  138.     f = open("lesecret.txt")
  139.     lignes = f.readlines()
  140.     f.close()
  141.     return lignes[0]
  142.    
  143. d = {}
  144. def dechiffrer():
  145.     global d
  146.     contenu = obtenirSecret()
  147.     dico = {}
  148.     for lettre in contenu:
  149.         if lettre != ' ' and lettre != '\n':
  150.             dico[lettre] = dico.get(lettre, 0) + 1
  151.    
  152.     lettres = pileListe(['e', 'a', 'i', 't', 's', 'n', 'l', 'u', 'r', 'o', 'd', 'm', 'c', 'p', 'v', 'q', 'h', 'f', 'b', 'g', 'j', 'x', 'y', 'w', 'z', 'k'])
  153.  
  154.     d = copy.deepcopy(dico)
  155.     dechiffre = copy.deepcopy(contenu)
  156.     while not lettres.est_vide():
  157.         try:
  158.             l = lettres.pop()
  159.             lettreChiffree = max(d, key = d.get)
  160.             dechiffre = dechiffre.replace(lettreChiffree, l)
  161.             d.pop(lettreChiffree)
  162.         except:
  163.             print("Lettre : ", lettre)
  164.     print(dechiffre)
  165.    
  166. dechiffrer()
Advertisement
Add Comment
Please, Sign In to add comment