Логическая функция F задаётся выражением
Дан заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F.
??? | ??? | ??? | ??? | F |
0 | 0 | 0 | 1 | 0 |
0 | 0 | 1 | 0 | 0 |
0 | 1 | 0 | 1 | 0 |
Определите, какому столбцу таблицы соответствует каждая из переменных x,y,w,z. В ответе напишите буквы x,y,w,z в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т.д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Решение 1
for x in range(2):
for y in range(2):
for w in range(2):
for z in range(2):
if ((x <= y) and ((not(z)) <= x) or w) == 0:
print(x, y, w, z)
Первый столбик — w, так как в нём нет единиц. Последний столбик — x, так как в этом столбце находится две единицы. Остальные столбики различаем по строкам, где стоят единицы. Там, где в одной строке с единицей стоит ещё единица, располагается буква z. Оставшийся столбик — y.
Решение 2
from itertools import *
def f(w, x, y, z):
return (x <= y) and (not(z) <= x) or w
tb = [(0, 0, 0, 1), (0, 0, 1, 0), (0, 1, 0, 1)]
if len(set(tb)) == 3:
for j in permutations(list(’wxyz’)):
t = [f(**dict(zip(j, k))) for k in tb]
if t == [0, 0, 0]:
print(j)