Логическая функция F задаётся выражением:
Дан частично заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F.
| ??? | ??? | ??? | ??? | F |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | |
| 0 | 0 | 0 | 0 | |
| 0 | 0 | 0 |
Определите, какому столбцу таблицы истинности соответствует каждая из переменных w, x, y, z.
В ответе напишите буквы w, x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть заданы выражение x → y, зависящее от двух переменных x и y, и фрагмент таблицы истинности.
| ??? | ??? | F |
| 0 | 1 | 0 |
Тогда первому столбцу соответствует переменная y, а второму столбцу соответствует переменная x. В ответе нужно написать: yx.
Приведём решение на языке Python.
from itertools import *
f = lambda x, y, z, w: (x <= (not(y==w))) and (y or ((w <= z)))
for a0, a1, a2, a3 in product((0, 1), repeat=4):
S = [(a0,0,0,0),(0,0,0,a1),(0,a2,0,a3)]
if len(S) == len(set(S)):
for x, y, z, w in permutations((0,1,2,3)):
if all(not f(s[x], s[y], s[z], s[w]) for s in S):
sl = dict([k, v] for k, v in zip([x,y,z,w],'xyzw'))
print(''.join(sl[i] for i in range(4)))
Ответ: wzyx.

