Логическая функция задаётся выражением:
Ниже представлен частично заполненный фрагмент таблицы истинности функции , содержащей неповторяющиеся строки.
Определите, какому столбцу истинности функции соответствует каждая переменная
Решение с использованием itertools:
from itertools import product
print("x y z w F")
for x, y, z, w in product([0, 1], repeat = 4):
if ((not w) <= ((y or (not z)) == (x <= (not y)))) == 0:
print(x, y, z, w, 0)
Классическое решение:
print("x y z w F")
for x in (0,1):
for y in (0,1):
for z in (0,1):
for w in (0, 1):
if ((not w) <= ((y or (not z)) == (x <= (not y)))) == 0:
print(x, y, z, w, 0)
Результат работы программы:
Анализируем результат. Под первую стороку таблицы подходит лишь первая строка из условия, так как только в ней 1 единица, значит второй столбец соответствует .
Есть только одна строка, в которой три единицы и один ноль. В ней и ей соответствует третья строка в исходной таблице. Значит, в третьем столбце находится
.
Только в столбце находится две единицы. Тогда этой переменной соответствует первый столбик исходной таблицы.
При всегда
. Тогда для переменной
отводится четвёртый столбик.
Получается ответ: