Variable ficticia en función bool.
Tengo la tarea de hacer un programa que encuentre las variables ficticias en una función booleana (la función booleana tiene una forma como 010101010
…).
import itertools
a = 0
fict = 0
print("¿Cuántas variables?:")
args = int(input())
while True:
print('La función:')
func = input()
if 2**args == len(func):
break
for i in itertools.product('01', repeat=args):
print(' '.join(i) + ' ' + func[a])
print('-----------')
fict += int(func[a])
a += 1
matr = list(func)
b = None
iter = 2
check = 0
if fict % 2 != 0:
print("No hay variables ficticias")
if fict % 2 == 0:
for k in range(args):
for s in range(2**check):
if matr[:] == matr[:]:
<pre><code> check+=1
</code></pre>
Algoritmo para reconocer una variable ficticia a partir de una tabla de verdad.
- Para la variable
x1
, se comparan las mitades de la columna de los valores de la función: la superior y la inferior, ya que es en la mitad superior dondex1 = 0
, y en la mitad inferior,x1 = 1
; si coinciden, entonces la variablex1
es ficticia; - para la variable
x2
, se comparan los cuartos de columna en cada mitad, ya que es en los cuartos superiores dondex2 = 0
, y en los cuartos inferioresx2 = 1
; si los cuartos en cada mitad coinciden, entonces la variablex2
es ficticia; -
y así sucesivamente (los cuartos son seguidos por 1/8, 1/16, …).
Y no entiendo cómo hacer este algoritmo en Python o tal vez hay algoritmos mucho más fáciles.
davy.ai
Para implementar el algoritmo anterior en Python, puede modificar el código dado de la siguiente manera:
Explicación del código:
2^num_vars
.x1
hastax<num_vars>
.Por favor, tenga en cuenta que esta implementación supone que la entrada de la función consiste solo en
0's
y1's
. Si hay otros caracteres, es posible que deba modificar el código en consecuencia.