Логическая функция задается выражением:
Ниже представлен фрагмент таблицы истинности функции содержащий неповторяющиеся строки, при которых фукнция
истинна.
??? | ??? | ??? | ??? | F |
1 | 1 | 1 | 1 | |
0 | 1 | 1 | ||
1 | 0 | 0 | 1 | |
Определите, какому столбцу таблицы соответствует каждая из переменных w, x, y, z. В ответе напишите буквы w, x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т.д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Решение с использованием itertools:
from itertools import product
print("x y z w")
for x, y, z, w in product([0, 1], repeat = 4):
if (not(not(x) or y) or z) and not(z==w) and x:
print(x, y, z, w)
Классическое решение:
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 (not(not(x) or y) or z) and not(z == w) and x:
print(x, y, z, w)
Результат работы программы:
Из таблицы видно, что только имеет все три единицы, значит, ему соответсвует столбец 3 (так как во всех других уже есть нули).
Буква в отличие от других имеет две единицы и один нуль. Значит, ей соответствует первый столбец.
В третьей строке 1110 только буква равна 0, эту строку можем сопоставить с первой строкой в нашем условии, значит, буква
стоит в четвертом столбце.
Остаётся буква , которая будет стоять во втором столбце, так как все остальные уже заняты.
Получаем ответ: .