Python
# Способ 1 — itertools
from itertools import *
def f(x, y, z, w):
# тут пишем логическое условие из задачи
return ((y and (x == (not z))) <= w) and (z <= y)
for x1, x2, x3, x4, x5 in product([0, 1], repeat=5):
# x1,x2,x3 — пропуски в таблице
# repeat = столько, сколько пропусков
t = (
(0, 0, x1, x2, 0),
(0, x3, 0, 0, 0),
(1, x4, x5, 1, 0),
) # таблица из задания
if len(t) == len(set(t)):
for p in permutations('xywz', r=4):
if all(f(**dict(zip(p, l))) == l[-1] for l in t):
print(*p) Способ 2
# Способ 2 — вложенные циклы
print('x y z w')
for x in range(0, 2):
for y in range(0, 2):
for w in range(0, 2):
for z in range(0, 2):
if not(not((x == (not(y)))) or ((x and w) == z)):
print(x, y, z, w) 📚 Теория
Логические функции и таблицы истинности. Используем перебор всех комбинаций для восстановления таблицы.