'''Arguments : une liste d'entiers non nuls traduisant une clause,une liste de booléens informant de valeurs logiques connues (ou None dans le cas contraire) pour un ensemble de variables
Renvoie : None ou booléen
'''
defevaluer_cnf(formule,list_var):
'''Arguments : une liste de listes d'entiers non nuls traduisant une formule,une liste de booléens informant de valeurs logiques connues (ou None dans le cas contraire) pour un ensemble de variables
Renvoie : None ou booléen
'''
defdetermine_valuations(list_var):
'''Arguments : une liste de booléens informant de valeurs logiques connues (ou None dans le cas contraire) pour un ensemble de variables
Renvoie : La liste de toutes les valuations (sans doublon) envisageables pour les variables de list_var
'''
defresol_sat_force_brute(formule,list_var):
'''Arguments : une liste de listes d'entiers non nuls traduisant une formule,une liste de booléens informant de valeurs logiques connues (ou None dans le cas contraire) pour un ensemble de variables
Renvoie : SAT,l1
avec SAT : booléen indiquant la satisfiabilité de la formule
l1 : une liste de valuations rendant la formule vraie ou une liste vide
'''
definit_formule_simpl_for(formule_init,list_var):
'''
Renvoie : La formule simplifiée en tenant compte des valeurs logiques renseignées dans list_var
'''
defenlever_litt_for(formule,litteral):
'''Arguments :
formule : comme précédemment
litteral : un entier non nul traduisant la valeur logique prise par une variable
Renvoie : la formule simplifiée
'''
defretablir_for(formule_init,list_chgmts):
'''Arguments : une formule initiale et une liste de changements à apporter sur un ensemble de variables (chaque changement étant une liste [i,bool] avec i l'index qu'occupe la variable dans list_var et bool la valeur logique qui doit lui être assignée)
Renvoie : la formule simplifiée en tenant compte de l'ensemble des changements
'''
defprogress(list_var,list_chgmts):
'''Arguments : list_var, list_chgmts définies comme précédemment
'''Arguments : list_sans_retour contient l'ensemble des numéros de variables auxquelles on a affecté une valeur logique sur laquelle on ne reviendra pas
renvoie :form,l1,l2,l3 avec :
form : la formule simplifiée
l1 : la liste actualisée des valeurs attribuées aux variables après le changement effectué
l2 : la liste actualisée de l'ensemble des changements effectués
l3 : la liste éventuellement actualisée des numéros de variables auxquelles une affectation a été attribuée sur laquelle on ne reviendra pas
'''
defretour(list_var,list_chgmts):
'''
renvoie :l1,l2 avec :
l1 : la liste actualisée des valeurs attribuées aux variables
l2 : la liste actualisée de l'ensemble des changements effectués depuis une formule initiale
l1=une liste de valuations rendant la formule vraie ou une liste vide
Affichage possible du temps mis pour la résolution
'''
defcreer_grille_init(list,n):
'''Arguments : une liste de listes(contenant les coordonnées à renseigner et le nombre correspondant) et un entier donnant la taille de la grille
Renvoie : une liste (list_grille_complete) avec les valeurs qui devront s'afficher dans la grille en la parcourant ligne après ligne de haut en bas et de gauche à droite
'''
defcreer_grille_final(list_var,n):
'''
Renvoie : une liste (list_grille_complete) avec les valeurs qui devront s'afficher dans la grille (en fonction des valeurs logiques prises par les variables de list_var) en la parcourant ligne après ligne de haut en bas et de gauche à droite
'''
defafficher_grille(grille,n):
deffor_conj_sudoku(n):
'''
Renvoie : la formule (liste de listes) associée à une grille de sudoku de taille n selon les attentes formulées dans le sujet
'''
definit_list_var(list_grille_complete,n):
'''
Renvoie : une liste list_var initialisant une valuation tenant compte des valeurs non nulles déjà renseignées dans list_grille_complete