[WikiItic] [TitleIndex] [WordIndex

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

2023-07-03 11:46