Fichiers
typo-cpge/latex/logique.py
2018-02-21 19:12:43 +01:00

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)