Advertisement
Guest User

Untitled

a guest
Apr 24th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.74 KB | None | 0 0
  1. def creer_recherche(M) :
  2. recherche = {}
  3. for i in range(M.taille_grille**2) :
  4. if M.tab[i] != "2":
  5. recherche[i+1] = int(M.tab[i])
  6. return recherche
  7.  
  8. def creer_cellule_fictive_et(sequence):
  9. c = Cellule(0)
  10. c.suivant = sequence.tete
  11. sequence.tete = c
  12. return c.suivant,c
  13.  
  14.  
  15. def creer_cellule_fictive_ou(cellule_et):
  16. c = Cellule(0)
  17. c.suivant = cellule_et.valeur
  18. cellule_et.valeur = c
  19. return c.suivant,c
  20.  
  21.  
  22. def supprimer_cellule_fictive_et(l):
  23. l.tete = l.tete.suivant
  24.  
  25. def supprimer_cellule_fictive_ou(cellule_et):
  26. cellule_et.valeur = cellule_et.valeur.suivant
  27.  
  28. def etudier_ou(cellule_et, cellule_et_prec, recherche):
  29. if cellule_et_prec.valeur == None:
  30. exit
  31. cellule_ou = Cellule(0)
  32. cellule_ou_prec = Cellule(0)
  33. cellule_ou,cellule_ou_prec = creer_cellule_fictive_ou(cellule_et)
  34. while cellule_ou != None :
  35. res = etudier_cell(cellule_ou, recherche)
  36. if res == 1 :
  37. cellule_et = supprimer_clause(cellule_et,cellule_et_prec)
  38. return cellule_et,cellule_et_prec
  39. elif res == 0 :
  40. cellule_ou = supprimer_litteral(cellule_ou,cellule_ou_prec)
  41. else :
  42. cellule_ou_prec = cellule_ou
  43. cellule_ou = cellule_ou.suivant
  44. supprimer_cellule_fictive_ou(cellule_et)
  45. cellule_et_prec = cellule_et
  46. cellule_et = cellule_et.suivant
  47. return cellule_et, cellule_et_prec
  48.  
  49.  
  50. def etudier_cell(cellule_ou,recherche):
  51. if (cellule_ou.valeur in recherche.keys()):
  52. val = recherche[cellule_ou.valeur]
  53. if val == 1 :
  54. return 1
  55. else :
  56. return 0
  57. elif (((-1) * cellule_ou.valeur) in recherche.keys()):
  58. val = recherche[(-1) * cellule_ou.valeur]
  59. if val == 0 :
  60. return 1
  61. else :
  62. return 0
  63. else :
  64. return -1
  65.  
  66. def supprimer_clause(cellule_et, cellule_et_prec):
  67. supprimer_cellule_apres(cellule_et_prec)
  68. cellule_et = cellule_et_prec.suivant
  69. return cellule_et
  70.  
  71.  
  72. def supprimer_litteral(cellule_ou, cellule_ou_prec):
  73. supprimer_cellule_apres(cellule_ou_prec)
  74. cellule_ou = cellule_ou_prec.suivant
  75. return cellule_ou
  76.  
  77.  
  78.  
  79. def supprimer_cellule_apres(cellule):
  80. cellule.suivant = cellule.suivant.suivant
  81.  
  82.  
  83.  
  84.  
  85. def simplifier (l,M):
  86. recherche = creer_recherche(M)
  87. if l.tete == None :
  88. print("Erreur ! La liste de formules n'existe pas.")
  89. exit()
  90. cellule_et = Cellule(0)
  91. cellule_et_prec = Cellule(0)
  92. cellule_et,cellule_et_prec = creer_cellule_fictive_et(l)
  93. while cellule_et != None :
  94. cellule_et, cellule_et_prec = etudier_ou(cellule_et,cellule_et_prec,recherche)
  95. supprimer_cellule_fictive_et(l)
  96. return l
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement