Mòdul Fbool
1 from string import *
2 from terme import *
3 import ct
4
5 def fbool_a_str(f):
6 """
7 Retorna un string que representa la funció f.
8
9 >>> fbool_a_str([(1, 0, 1), (2, 0, 0)])
10 "AB'C+B'C'"
11
12 >>> fbool_a_str([(1, 0, 0,), (1, 0, 2), (2, 2, 1), (1, 1, 1)])
13 "AB'C'+AB'+C+ABC"
14 """
15 s=''
16 for element in f:
17
18 for i,l in enumerate(element):
19 if l==0 :
20 s= s + ascii_uppercase[i]+"'"
21 if l==1:
22 s= s+ ascii_uppercase[i]
23 s+='+'
24 return s[:len(s)-1]
25
26 def nvars(f):
27 """
28 Retorna el nombre de variables de la funció f.
29 >>> nvars([(1, 0, 1), (1, 1, 1), (0, 0, 0), (2, 1, 0)])
30 3
31 >>> nvars([(2, 2, 0, 1), (1, 2, 1, 2), (2, 1, 0, 0)])
32 4
33 """
34 return len(f[0])
35
36 def termes(f):
37 """
38 Retorna en conjunt de termes de f
39
40 >>> termes([(1, 0, 1), (1, 1, 1), (0, 0, 0), (2, 1, 0)])
41 4
42
43 >>> termes([(2, 2, 0, 1), (1, 2, 1, 2), (2, 1, 0, 0)])
44 3
45 """
46 return len(f)
47
48
49 def afegeix(f,t):
50 """
51 Retorna la funció booleana resultat d’afegir
52 el terme t a la funció f. En cas que la funció
53 f inclogués termes que són representats per t,
54 aquests termes s’eliminen de la representació
55 d’f i se substitueixen unicament per t.
56
57 >>> afegeix([(1, 1, 0), (1, 1, 1), (0, 1, 0)], (1, 1, 2))
58 [(0, 1, 0), (1, 1, 2)]
59 """
60
61 index=0
62 while index<termes(f):
63 if representa(t,f[index]):
64 del(f[index])
65 else:
66 index+=1
67 f_nou=ct.afegeix(f,t)
68 return f_nou
69
70 def crea(ct):
71 """
72 Retorna la funció booleana definida pel conjunt de termes ct.
73
74 >>> crea(['100','011','010'])
75 [(1, 0, 0), (0, 1, 1), (0, 1, 0)]
76 >>> crea(['111','110','100','000'])
77 [(1, 1, 1), (1, 1, 0), (1, 0, 0), (0, 0, 0)]
78
79 """
80 f=[]
81 for terme in ct:
82 f.append(str_a_terme(terme))
83 return f