47 lignes
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			47 lignes
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import itertools
 | |
| 
 | |
| def dA(s) :
 | |
|     return s[0] and s[1] and not s[2]
 | |
|     
 | |
| def dB(s) :
 | |
|     return not s[2]
 | |
|     
 | |
| def dC(s) :
 | |
|     return (s[1] or not s[0]) and not (s[1] and not s[0])
 | |
|     
 | |
| def dmA(s) :
 | |
|     return s[0] == dA(s)
 | |
|     
 | |
| def dmB(s) :
 | |
|     return s[1] == dB(s)
 | |
|     
 | |
| def dmC(s) :
 | |
|     return s[2] == dC(s)
 | |
|     
 | |
| def OK(s) :
 | |
|     return dmA(s) and dmB(s) and dmC(s)
 | |
|     
 | |
| def table(nvar, lf) :
 | |
|     produit = list(itertools.product([False, True], repeat=nvar))
 | |
|     table = []
 | |
|     for s in produit :
 | |
|         ligne = {"s" : s}
 | |
|         for f in lf :
 | |
|             ligne[f.__name__] = f(s)
 | |
|         table.append(ligne)
 | |
|     return table
 | |
|     
 | |
| def table_to_latex(table, vars, lf) :
 | |
|     fb = lambda b : r"\V" if b else r"\F"
 | |
|     #keys = [x for x in sorted(list(table[0].keys())) if x!="s"]
 | |
|     keys = [f.__name__ for f in lf]
 | |
|     print(r"\begin{array}{"+ "|".join(["c"] * len(vars)) + "||" + "|".join(["c"] * len(keys)) + "}")
 | |
|     print("&".join(vars + [x for x in keys])+r"\\")
 | |
|     print(r"\hline")
 | |
|     for l in table :
 | |
|         print("&".join([fb(x) for x in l["s"]]+[fb(l[k]) for k in keys]),r"\\", sep="")
 | |
|     print(r"\end{array}")
 | |
|         
 | |
| def table_latex(vars, lf) :
 | |
|     t = table(len(vars), lf)
 | |
|     table_to_latex(t, vars, lf) | 
