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

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

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

????F
1010
010
00

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

???F
0111

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

Решение:

Python


from itertools import permutations, product

def F(x, y, z, w):
    return x 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 = [(1, 0, a, 1, 0),
                 (b, 0, 1, c, 0),
                 (d, 0, e, f, 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))

Ответ: \(4\)