Миша заполнял таблицу истинности логической функции F
но успел заполнить лишь фрагмент из четырёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных ,
,
,
.
??? | ??? | ??? | ??? | f |
1 | 1 | 1 | ||
1 | 1 | 1 | 0 | 1 |
0 | 1 | 1 | 1 | |
1 | 1 | 0 | 1 | 1 |
Определите, какому столбцу таблицы соответствует каждая из переменных ,
,
,
. В ответе напишите буквы
,
,
,
в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т.д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно. Если вариантов расположить буквы несколько, на первое место поставьте ту, что встречается позже в алфавите.
Программа:
def f(x, y, z, w):
return ((y <= (not(w) and y)) <= (z == y and not(z == w))) and x
print("x y z w")
a = (0, 1)
for x in a:
for y in a:
for z in a:
for w in a:
if f(x, y, z, w) == 1:
print(x, y, z, w)
Запустим программу и получим такой вывод:
x y z w
1 0 0 1
1 1 0 1
1 1 1 0
1 1 1 1
В исходной таблице не хватает строки со всеми единицами, значит на пропуски 1-й строки поставим единицы. В выводе только две строки с тремя единицами, значит поставим ноль на место последнего пропуска. z поставим на 3-е место, так как только там есть две единицы. Там, где у z единицы, только у w есть ноль, значит, w поставим на 4-е место. Там, где у z нули, только у y есть ноль, значит, y поставим на первое место. По остаточному принципу поставим x на 2-е место.