Задание 2

Таблицы истинности

Типов: 2

01

Как распознать

Дана логическая функция, нужно найти наборы, на которых она равна 0 или 1.

02

Условие

Для функции x ∨ ¬y ∨ (¬z ∧ w) вывести строки, на которых функция равна 0.

03

Разбор

Перебери все наборы переменных и отфильтруй нужное значение.

04

Шаблон

template.py
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)
01

Как распознать

Дана неполная таблица истинности без подписей переменных.

02

Условие

Сопоставить неизвестные столбцы с x, y, w, z для заданной функции.

03

Разбор

Перебери пропуски и все перестановки имён переменных.

04

Шаблон

template.py
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)