[WikiItic] [TitleIndex] [WordIndex

Mòdul terme

   1 def str_a_terme(s):
   2     """
   3     Converteix de String a terme.
   4     -----------------------------
   5 
   6     Donat un string s format únicament pels caràcters 
   7     '0', '1' i '2', retorna el terme que li correspon.
   8 
   9     >>> str_a_terme('0')
  10     (0,)
  11     >>> str_a_terme('1')
  12     (1,)
  13     >>> str_a_terme('01002')
  14     (0, 1, 0, 0, 2)
  15     >>> str_a_terme('11220020122')
  16     (1, 1, 2, 2, 0, 0, 2, 0, 1, 2, 2)
  17 
  18     """
  19     
  20     terme=[]
  21     for caracter in s:
  22         terme.append(int(caracter))
  23     return tuple(terme)
  24 
  25 
  26 
  27 def terme_to_str(t):
  28     """
  29     Converteix de terme a String.
  30     -----------------------------
  31 
  32     Donat un terme t retorna l'string que li correspon.
  33 
  34     >>> terme_to_str((0,1,0,0,2))
  35     '01002'
  36     >>> terme_to_str((0,))
  37     '0'
  38     >>> terme_to_str((2,2,1,1,0,0))
  39     '221100'
  40 
  41     """
  42     cadena=''
  43     for caracter in t:
  44         cadena+=str(caracter)
  45     return cadena
  46 
  47 
  48 def compta(t, d=1):
  49    """
  50    Compta dígits de valor d.
  51    -------------------------
  52 
  53    Funció que retorna el nombre de digits amb valor d que conté el 
  54    terme t. El paràmetre d és opcional i el seu valor per defecte és 1.
  55 
  56    >>> compta((1, 1, 2, 2, 0, 0, 2, 0, 1, 2, 2))
  57    3
  58    >>> compta((1, 1, 2, 2, 0, 0, 2, 0, 1, 2, 2),2)
  59    5
  60    >>> compta((1, 1, 2, 2, 0, 0, 2, 0, 1, 2, 2),0)
  61    3
  62    >>> compta((1,1,2,2,1,2,1,1,),0)
  63    0
  64    >>> compta((1,1,2,2,1,2,1,1,),1)
  65    5
  66    """
  67 
  68    items=0
  69    for digit in t:
  70        if digit==d:
  71            items+=1
  72    return items
  73 
  74 
  75 def es_minterm(t):
  76    """
  77    Comprova si es minterm.
  78    ------------------------
  79    Retorna True si el terme t representa un minterm.
  80 
  81    >>> es_minterm((1,1,1,0,0,1,0))
  82    True
  83    >>> es_minterm((0,0,0))
  84    True
  85    >>> es_minterm((0,1,2))
  86    False
  87    """
  88    return potencia(t)==0
  89 
  90 
  91 def potencia(t):
  92    """
  93    Comprova els digits de valor 2.
  94    -------------------------------
  95 
  96    Funció que retorna en nombre de digits 2 del terme t.
  97 
  98    >>> potencia((0,1,0,1,0,0))
  99    0
 100    >>> potencia((0,1,0,2,0,1))
 101    1
 102    >>> potencia((0,1,0,2,0,2))
 103    2
 104    """
 105 
 106    return compta(t,2)
 107 
 108 
 109 def son_reduibles(t1, t2):
 110    """
 111    Comprova reductibilitat.
 112    ------------------------
 113 
 114    Funció que retorna True si els termes t1 i t2 es poden reduir 
 115    a un implicant,  ́és a dir, si t1 i t2 es diferencien només en 
 116    un dígit.
 117 
 118    >>> son_reduibles((0,1,0,1),(1,1,0,1))
 119    True
 120    >>> son_reduibles((2,1,1,0),(2,1,0,0))
 121    True
 122    >>> son_reduibles((2,1,0,1),(0,1,0,1))
 123    True
 124    >>> son_reduibles((0,1,1,1),(1,1,0,1))
 125    False
 126    >>> son_reduibles((0,1,0,1),(1,2,0,1))
 127    False
 128    """
 129    resultat=[]
 130    for i in range(0,len(t1)):
 131        if t1[i]==t2[i]:
 132            resultat.append(0)
 133        else:
 134            resultat.append(1)
 135    return compta(tuple(resultat))==1
 136 
 137 
 138 def implicant(t1, t2):
 139    """
 140    Calcula implicant.
 141    ------------------
 142 
 143    Funció que retorna l’implicant dels termes t1 i t2. S’assumeix 
 144    que t1 i t2 tenen un implicant, altrament el resultat de la 
 145    operació no està definit.
 146    
 147    >>> implicant((0,1,0,1),(1,1,0,1))
 148    (2, 1, 0, 1)
 149    >>> implicant((2,1,1,0),(2,1,0,0))
 150    (2, 1, 2, 0)
 151    >>> implicant((2,1,0,1),(0,1,0,1))
 152    (2, 1, 0, 1)
 153    """
 154    resultat=[]
 155    for i in range(0,len(t1)):
 156        if t1[i]==t2[i]:
 157            resultat.append(t1[i])
 158        else:
 159            resultat.append(2)
 160    return tuple(resultat)
 161 
 162 
 163 def representa(i,t):
 164    """
 165    Comprova representació.
 166    -----------------------
 167 
 168    Funció que retorna True si l'implicant i representa el terme i.
 169    
 170    >>> representa((2,0,0,1),(1,2,0,1))
 171    False
 172    >>> representa((2,0,0,1),(1,0,0,1))
 173    True
 174    >>> representa((2,1,0,1),(1,0,2,1))
 175    False
 176    >>> representa((2,1,2,1),(1,1,2,1))
 177    True
 178    """
 179 
 180    implicants_l=list(i)
 181    terme=list(t)
 182    for j in range(0,len(implicants_l)):
 183        if implicants_l[j]==2:
 184            terme[j]=2
 185    return implicants_l==terme 

2023-07-03 11:46