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