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

Просмотры: 46
Изменено: 23 ноября 2024

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

????F
00010
11100

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

???F
0111

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

Решение:

Python


from itertools import permutations

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

table = [(0, 0, 0, 1, 0),
         (1, 1, 1, 0, 0)]

ans = set()
for p in permutations('xyzw'):
    if all(F(**dict(zip(p, row))) == row[-1] for row in table):
        ans.add(''.join(p))
print(len(ans))

Ответ: \(12\)