Задание 2
Таблицы истинности
Типов: 2
Как распознать
Дана логическая функция, нужно найти наборы, на которых она равна 0 или 1.
Условие
Для функции x ∨ ¬y ∨ (¬z ∧ w) вывести строки, на которых функция равна 0.
Разбор
Перебери все наборы переменных и отфильтруй нужное значение.
Шаблон
print('x y z w')
for x in range(2):
for y in range(2):
for z in range(2):
for w in range(2):
if (x or (not(y)) or ((not(z)) and w)) == 0:
print(x, y, z, w)Как распознать
Дана неполная таблица истинности без подписей переменных.
Условие
Сопоставить неизвестные столбцы с x, y, w, z для заданной функции.
Разбор
Перебери пропуски и все перестановки имён переменных.
Шаблон
from itertools import product, permutations
def f(x, y, w, z):
return (w == z) or (not (y <= w)) or (not x)
for x1, x2, x3, x4, x5 in product([0, 1], repeat=5):
t = (
(0, 0, 1, x1, 0),
(x2, 1, 1, x3, 0),
(0, x4, x5, 0, 0)
)
if len(t) == len(set(t)):
for p in permutations('xywz'):
if all(f(**dict(zip(p, line))) == line[-1] for line in t):
print(*p)