— исключающее
(операция
).
Ниже представлен частично заполненный фрагмент таблицы истинности функции , содержащей неповторяющиеся строки.
Определите, какому столбцу истинности функции соответствует каждая переменная
Решение программой
def xor(x,y):
if (x==y):
return False
return True
def f(x,y,z,w):
return int((x or (not y)) == ((not w) <= (z == (xor((not x),y)))))
print("x y z w F")
for x in (0,1):
for y in (0,1):
for z in (0,1):
for w in (0, 1):
if (not f(x,y,z,w)):
print(x,y,z,w,f(x,y,z,w))
Результат работы программы:
Функция на наборах
и
ложна, а на наборах
и
истинна. Поэтому функция
при одинаковых значения возвращает
, а при разных —
.
Анализируем результат. Нет строки с четырьмя единицами, но есть только одна строка с тремя единицами. Такому виду соответствует последняя строка таблицы истинности из условия. Сопоставляем с исходными данными. Следовательно, второй столбик принадлежит .
Только в одной строке содержится три ноля и одна единица, стоящая в столбце . Такому виду подходит только первая строка исходной таблицы. Значит, последний столбик в ней занимает
.
Обратим внимание на предпоследнюю строку из таблицы результата. В ней при имеем
. Такому виду соответствует третья строка из условия. Тогда в третьем столбце находится
, а в первом —
.
Решение руками
Выпишем полную таблицу истинности и найдём все сочетания ,
,
,
при которых функция равняется нулю:
Дальнейшее аналитическое рассуждение аналогично рассуждению из решения программой.