Логическая функция задаётся выражением
Ниже представлен фрагмент таблицы истинности функции содержащий неповторяющиеся строки, при которых функция
ложна.
Определите, какому столбцу таблицы истинности функции соответствует каждая переменная
Решение 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):
f = y or (x and w) or (w == z)
if not f:
print(x, y, z, w)
Получим табличку:
Только у одной буквы может быть единички, и они уже проставлены, значит
столбец это
. Только в одной строчке есть две единички и два нуля, значит
столбец — это
. При строчке, где
и остальные нули — проставим эти нули. У нас остается незаполненная
строчка, но у нас не может быть всех нулей, значит в свободную ячейку ставим единичку. Получаем полностью заполненную табличку и делаем вывод, что
столбец — это
.
столбец —
.
Решение 2
Выпишем полную таблицу истинности и найдём все сочетания ,
,
,
, при которых функция равняется нулю:
Дальнейшее аналитическое рассуждение аналогично рассуждению из решения 1.
Решение 3
from itertools import *
def f(w, x, y, z):
return y or (x and w) or (w == z)
for i in product([0, 1], repeat=5):
a, b, c, d, e = i
tb = [(a, 0, 0, b), (1, 1, 0, c), (1, d, e, 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)