Логическая функция задаётся выражением:
Ниже представлен фрагмент таблицы истинности функции , содержащий неповторяющиеся строки.
Определите, какому столбцу истинности функции соответствует каждая переменная
.
Решение 1
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 and y) or (y == z) or w) == 0:
print(x, y, z, w)
Программа выведет:
Заметим, что всегда принимает значение
, значит,
— третий столбец таблицы истинности. Переменная
принимает значени
только один раз, значит,
соответствует первый столбец. Существует случай когда
принимает значение
вместе с
, тогда
— второй столбец. Оставшийся (четвертый столбик) — это
.
Получаем ответ:
Решение 2
from itertools import *
def f(w, x, y, z):
return (x and y) or (y == z) or w
tb = [(1, 1, 0, 0), (0, 0, 0, 1), (1, 0, 0, 0)]
if len(set(tb)) == 3:
for j in permutations(list(’wxyz’)):
t = [f(**dict(zip(j, k))) for k in tb]
if t == [0, 0, 0]:
print(j)