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