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

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

(x ∧y) ∨(y ≡ z)∨w

Ниже представлен фрагмент таблицы истинности функции F  , содержащий неповторяющиеся строки.

|----|---|----|----|--| |???-|???|???-|???-|F-| | 1  | 1 | 0  | 0  |0 | |----|---|----|----|--| |-0--|-0-|-0--|-1--|0-| --1----0---0----0---0--

Определите, какому столбцу истинности функции F  соответствует каждая переменная x,y,z,w  .

Решение 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 ((x and y) or (y == z) or w) == 0:
                    print(x, y, z, w)

Программа выведет:

|--|--|--|--| |x |y |z |w | |--|--|--|--| |0-|0-|1-|0-| |0-|1-|0-|0-| |1 |0 |1 |0 | -------------

Заметим, что w  всегда принимает значение 0  , значит, w  — третий столбец таблицы истинности. Переменная    z  принимает значени 0  только один раз, значит, z  соответствует первый столбец. Существует случай когда z  принимает значение 1  вместе с x  , тогда x  — второй столбец. Оставшийся (четвертый столбик) — это y  .

Получаем ответ: zxwy

Решение 2

from itertools import *
def f(w, x, y, z):
    return (x and y) or (y == z) or w

tb = [(1, 1, 0, 0), (0, 0, 0, 1), (1, 0, 0, 0)]
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)

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