Задание 2. Информатика. ЕГЭ. Поляков-3974
- Просмотры: 47
- Изменено: 30 октября 2024
(В.Н. Шубинкин) Логическая функция \(F\) задаётся выражением $$ x \land (y \to z) \lor w. $$ Ниже приведён частично заполненный фрагмент таблицы истинности этой функции, содержащий неповторяющиеся строки. Сколькими способами можно поставить в соответствие переменные \(w\), \(x\), \(y\), \(z\) столбцам таблицы истинности функции \(F\), опираясь на информацию из данного фрагмента?
? | ? | ? | ? | F |
---|---|---|---|---|
1 | 0 | 1 | 0 | |
0 | 1 | 0 | ||
0 | 0 |
Пример. Функция \(F\) задана выражением \(x \lor y \lor z\), а фрагмент таблицы истинности имеет вид:
? | ? | ? | F |
---|---|---|---|
0 | 1 | 1 | 1 |
В этом случае переменные можно расставить любым способом, значит, ответом будет число \(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\)