№2 · решено
Фрагмент таблицы истинности (F = 1)
Миша заполнял таблицу истинности логической функции F = (x ∧ ¬z ∧ ¬w) ∨ (x ∧ ¬z ∧ y), но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.
| F | ||||
|---|---|---|---|---|
| 1 | 1 | |||
| 0 | 1 | 1 | ||
| 0 | 0 | 1 |
Определите, какому столбцу таблицы соответствует каждая из переменных w, x, y, z. В ответе напишите буквы w, x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т.д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Источник: ФИПИ (ЕГКР 18.04.2026), № 28923
Ответвпиши то, что вывела программа
Показать разбор
- Перепиши функцию на Python: → это <=, ≡ это ==, ¬ это not, ∨ это or, ∧ это and. Ставь скобки вокруг каждой операции.
- Перепиши фрагмент в кортеж t, последним числом в строке ставь значение F (тут везде 1).
- Пустых клеток 7, заполни их всеми способами через product и отбрось варианты, где строки совпали.
- Через permutations перебери порядок столбцов и проверь, что f на каждой строке даёт значение из таблицы.
- Один порядок находится при разных заполнениях, поэтому собирай его в множество. Ответ это буквы в порядке столбцов, подряд.
from itertools import product, permutations
def f(x, y, z, w):
return (x and (not z) and (not w)) or (x and (not z) and y)
ans = set()
for a, b, c, d, e, g, h in product([0, 1], repeat=7):
t = (
(1, a, b, c, 1),
(0, d, 1, e, 1),
(g, h, 0, 0, 1),
)
if len(t) == len(set(t)):
for p in permutations('xyzw'):
if all(f(**dict(zip(p, line))) == line[-1] for line in t):
ans.add(''.join(p))
print(*ans)