Задача к ЕГЭ по информатике на тему «полностью заполненные фрагменты таблицы истинности» №3

Логическая функция F задаётся выражением

F = (x → y) ∧(¬z → x)∨ w

Дан заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции 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)

Ответ: wzyx
Оцените статью
Я решу все!