Задание 2. Информатика. ЕГЭ. Поляков-3972

Просмотры: 52
Изменено: 30 октября 2024

(В.Н. Шубинкин) Логическая функция \(F\) задаётся выражением $$ (x \to w) \land (y \to z) \lor w. $$ Ниже приведён частично заполненный фрагмент таблицы истинности этой функции, содержащий неповторяющиеся строки. Сколькими способами можно поставить в соответствие переменные \(w\), \(x\), \(y\), \(z\) столбцам таблицы истинности функции \(F\), опираясь на информацию из данного фрагмента?

????F
10
110
1110

Пример. Функция \(F\) задана выражением \(x \lor y \lor z\), а фрагмент таблицы истинности имеет вид:

???F
0111

В этом случае переменные можно расставить любым способом, значит, ответом будет число \(6\).

Решение:

Python


from itertools import permutations, product

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

ans = set()
for p in permutations('xyzw'):
    for a, b, c, d, e, f in product([0, 1], repeat=6):
        table = [(a, b, c, 1, 0),
                 (d, e, 1, 1, 0),
                 (f, 1, 1, 1, 0)]
        if len(set(table)) < 3:
            continue
        if all(F(**dict(zip(p, row))) == row[-1] for row in table):
            ans.add(''.join(p))
print(len(ans))

Ответ: \(3\)