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

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

    -- (x ∨ y) → (z ≡ (x ∧ y)) ∨¬(w )

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

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

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

Решение 1

Напишем программу, которая выведет значения x, y и z при которых значение выражение равно 0:

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 (((x or not(y)) <=  (z == (x and y))) or not(w)) == False:
                    print(w, x, y, z)
 

Программа выводит следующий результат:

w x y z

1 0 0 1

1 1 0 1

1 1 1 0

Очевидно, что четвертому столбцу соответствует переменная w, так как в остальных столбцах есть нули.

Также однозначно можно определить что третьему столбцу соответствует y так как только в нем есть два нуля. В строке с двумя нулями один пренадлежит y, а второй тогда x, тогда второй столбец это x. Остается только первый столбец – это переменная z. Тогда ответ zxyw.

Решение 2

from itertools import *

def f(w, x, y, z):
    return (x or not y) <= (z == (x and y)) or not w

for i in product([0, 1], repeat=6):
    a, b, c, d, e, p = i
    tb = [(a, 0, 0, b), (1, c, 0, d), (0, 1, e, p)]
    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)

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