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