Миша заполнял таблицу истинности логической функции F:
| F | ||||
|---|---|---|---|---|
| 1 | 1 | 1 | ||
| 1 | 0 | 0 | 1 | |
| 1 | 1 | 0 | 1 |
Определите, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.
В ответе напишите буквы w, x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Функция F задана выражением
| F | ||
|---|---|---|
| 0 | 1 | 0 |
В этом случае первому столбцу соответствует переменная y, а второму столбцу — переменная x. В ответе следует написать: yx.
Приведём решение.
Составим таблицу истинности для выражения (x∨¬y)∧¬(y≡z)∧¬w, вручную или при помощи языка Python:
print("x y z w")
for x in range(0, 2):
for y in range(0, 2):
for z in range(0, 2):
for w in range(0, 2):
if (x or not(y)) and (not(y == z)) and (not (w)):
print(x, y, z, w)
Далее выпишем те наборы переменных, при которых данное выражение равно 1. В наборах переменные запишем в порядке х, y, z, w. Получим следующие наборы:
(0, 0, 1, 0),
(1, 0, 1, 0),
(1, 1, 0, 0).
Сопоставим эти наборы с приведенным в задании фрагментом таблицы истинности.
Рассмотрим последний столбец таблицы истинности, он может соответствовать только переменной w, так как только эта переменная не может принимать значение 1.
Рассмотрим вторую строку таблицы истинности. Это строка может соответствовать только набору (0, 0, 1, 0). Следовательно, первая и последние строки содержать по две 1 и два 0. Получаем третий столбец как (0, 0, 1). Он может соответствовать только y. По условию y не равен z. Следовательно, z — это второй столбец, тогда как x — первый.
Ответ: xzyw.
Приведём решение Александра Козлова.
from itertools import product
print ('результат:\nx y z w') # заголовок таблицы по условию
for x, y, z, w in product([0, 1], repeat = 4):
if (x or y) and (not(y == z) and not w):
print(x,y,z,w)
результат:
x y z w
0 1 0 0
1 0 1 0
1 1 0 0
Очевидно что W – соответствует последнему правому столбцу.
Видим, что столбец Z имеет только одну единичку, следовательно, он может стоять только на первом месте.
И, заметим – у X единица на одной строке с Z
Совет:
Не поленитесь и поменяйте в коде переменные местами согласно рассуждениям выше:
from itertools import product
print ('результат:\nz y x w') # заголовок таблицы по условию
for z, y, x, w in product([0, 1], repeat = 4):
if (x or y) and (not(y == z) and not w):
print(z,y,x,w)
результат:
z y x w
0 1 0 0
0 1 1 0
1 0 1 0
Если единица в первом столбце стоит в той же строке что и в третьем – решение верно!

