Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def creer_recherche(M) :
- recherche = {}
- for i in range(M.taille_grille**2) :
- if M.tab[i] != "2":
- recherche[i+1] = int(M.tab[i])
- return recherche
- def creer_cellule_fictive_et(sequence):
- c = Cellule(0)
- c.suivant = sequence.tete
- sequence.tete = c
- return c.suivant,c
- def creer_cellule_fictive_ou(cellule_et):
- c = Cellule(0)
- c.suivant = cellule_et.valeur
- cellule_et.valeur = c
- return c.suivant,c
- def supprimer_cellule_fictive_et(l):
- l.tete = l.tete.suivant
- def supprimer_cellule_fictive_ou(cellule_et):
- cellule_et.valeur = cellule_et.valeur.suivant
- def etudier_ou(cellule_et, cellule_et_prec, recherche):
- if cellule_et_prec.valeur == None:
- exit
- cellule_ou = Cellule(0)
- cellule_ou_prec = Cellule(0)
- cellule_ou,cellule_ou_prec = creer_cellule_fictive_ou(cellule_et)
- while cellule_ou != None :
- res = etudier_cell(cellule_ou, recherche)
- if res == 1 :
- cellule_et = supprimer_clause(cellule_et,cellule_et_prec)
- return cellule_et,cellule_et_prec
- elif res == 0 :
- cellule_ou = supprimer_litteral(cellule_ou,cellule_ou_prec)
- else :
- cellule_ou_prec = cellule_ou
- cellule_ou = cellule_ou.suivant
- supprimer_cellule_fictive_ou(cellule_et)
- cellule_et_prec = cellule_et
- cellule_et = cellule_et.suivant
- return cellule_et, cellule_et_prec
- def etudier_cell(cellule_ou,recherche):
- if (cellule_ou.valeur in recherche.keys()):
- val = recherche[cellule_ou.valeur]
- if val == 1 :
- return 1
- else :
- return 0
- elif (((-1) * cellule_ou.valeur) in recherche.keys()):
- val = recherche[(-1) * cellule_ou.valeur]
- if val == 0 :
- return 1
- else :
- return 0
- else :
- return -1
- def supprimer_clause(cellule_et, cellule_et_prec):
- supprimer_cellule_apres(cellule_et_prec)
- cellule_et = cellule_et_prec.suivant
- return cellule_et
- def supprimer_litteral(cellule_ou, cellule_ou_prec):
- supprimer_cellule_apres(cellule_ou_prec)
- cellule_ou = cellule_ou_prec.suivant
- return cellule_ou
- def supprimer_cellule_apres(cellule):
- cellule.suivant = cellule.suivant.suivant
- def simplifier (l,M):
- recherche = creer_recherche(M)
- if l.tete == None :
- print("Erreur ! La liste de formules n'existe pas.")
- exit()
- cellule_et = Cellule(0)
- cellule_et_prec = Cellule(0)
- cellule_et,cellule_et_prec = creer_cellule_fictive_et(l)
- while cellule_et != None :
- cellule_et, cellule_et_prec = etudier_ou(cellule_et,cellule_et_prec,recherche)
- supprimer_cellule_fictive_et(l)
- return l
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement