Задание 2 ЕГЭ по информатике 2027 — фрагмент таблицы истинности с пустыми клетками
Разбор задания 2 ЕГЭ по информатике 2027: фрагмент из трёх различных строк с пустыми клетками, условие «разным строкам — разные наборы», разбор демо с ответом yxzw и Python-перебор.
В 2027 году задание 2 выглядит так: дана логическая функция от четырёх переменных и фрагмент её таблицы истинности из трёх различных строк, в котором часть клеток пуста. Нужно определить, какому столбцу соответствует каждая переменная, и записать буквы подряд. Так задание было устроено и в демоверсии 2026. Пустые клетки и оговорка «строки различны» — не формальность: в демоверсии ФИПИ без неё подходят два порядка, xyzw и yxzw, а с ней — только yxzw.
Ниже — условие демо, ручной разбор, Python-перебор, который печатает ответ, и список ловушек. Разбор варианта с полностью заполненным фрагментом — в статье о задании 2; логические операции и их таблицы там разобраны подробно, здесь повторяю только нужное.
Условие демоверсии 2027
Миша заполнял таблицу истинности функции
F = ((x ≡ ¬y) → ¬(w → x)) ∨ ¬z
и успел заполнить лишь фрагмент из трёх различных её строк, не указав, какому столбцу соответствует каждая из переменных w, x, y, z.
| Столбец 1 | Столбец 2 | Столбец 3 | Столбец 4 | F |
|---|---|---|---|---|
| 0 | 1 | 0 | 0 | |
| 0 | 0 | 0 | ||
| 1 | 1 | 0 |
Пустая клетка означает, что значение не записано — оно может быть любым. Нужно определить, какому столбцу соответствует каждая переменная, и записать буквы в порядке столбцов. Ответ ФИПИ: yxzw.
Что даёт столбец F
Во всех трёх строках F = 0. Функция — дизъюнкция двух частей: (x ≡ ¬y) → ¬(w → x) и ¬z. Дизъюнкция равна нулю, только когда обе части равны нулю. Отсюда два условия на каждую строку фрагмента.
| Часть функции | Должна быть равна | Что это значит для переменных |
|---|---|---|
| ¬z | 0 | z = 1 |
| (x ≡ ¬y) → ¬(w → x) | 0 | посылка истинна, вывод ложен: x ≡ ¬y и w → x |
Импликация равна нулю в единственном случае — когда её левая часть истинна, а правая ложна. Значит, x ≡ ¬y истинно, то есть x и y различны, а ¬(w → x) ложно, то есть w → x истинно: нельзя одновременно w = 1 и x = 0.
Итого в каждой строке фрагмента: z = 1, x ≠ y, и не бывает «w = 1 при x = 0». С этими тремя правилами фрагмент разбирается руками.
Ручной разбор
Столбец z. В нём не может быть нулей — z = 1 во всех строках. Во второй строке нули стоят в столбцах 1 и 4, значит z — столбец 2 или 3. В первой строке в столбце 2 стоит 0, значит z — столбец 3. Сверь: в столбце 3 стоят 1, пусто, 1 — противоречий нет.
Переменные x и y. Остались столбцы 1, 2 и 4 для w, x, y. В первой строке в столбцах 2 и 4 стоят нули, столбец 1 пуст. x и y должны различаться, поэтому они не могут обе быть в столбцах 2 и 4: одна из них — столбец 1, где можно поставить единицу. Если x — столбец 2 (x = 0), то y — столбец 1 (y = 1), а w — столбец 4 (w = 0), и условие «не w = 1 при x = 0» выполнено. Если же y — столбец 2 (y = 0), то x — столбец 1 (x = 1), w — столбец 4: пока тоже возможно. Остаётся случай, когда в столбце 2 стоит w: тогда x и y — столбцы 1 и 4, но во второй строке в обоих нули, x = y = 0, а они должны различаться. Значит, w не в столбце 2. Два кандидата: yxzw и xyzw.
Третья строка решает. В ней столбец 2 равен 1, столбцы 1 и 4 пусты.
- Для
yxzw: x = 1 (столбец 2), значит y = 0 (столбец 1), w — любое. Строка получаетсяy=0, x=1, z=1, w=0 или 1. - Для
xyzw: y = 1 (столбец 2), значит x = 0 (столбец 1), а тогда w → x требует w = 0. Строка получаетсяx=0, y=1, z=1, w=0— ровно один набор.
Теперь вторая строка для xyzw: x = 0 (столбец 1), w = 0 (столбец 4), значит y = 1, z = 1 — набор x=0, y=1, z=1, w=0. Он совпадает с набором третьей строки. Но строки фрагмента различны по условию, а в таблице истинности каждый набор встречается один раз. Порядок xyzw отпадает.
Для yxzw всё сходится: первая строка y=1, x=0, z=1, w=0, вторая y=0, x=1, z=1, w=0, третья y=0, x=1, z=1, w=1 — три разных набора, в каждом F = 0. Ответ: yxzw.
Решение на Python
Перебор делает ту же работу без рассуждений. Клетки строки записываем строкой из цифр и знаков - для пустых; функцию переносим в Python по словарю: ¬ — not, ∧ — and, ∨ — or, A → B — (not a) or b, A ≡ B — a == b.
from itertools import product, permutations
# клетки по столбцам ("-" — пусто) и значение F в той же строке
rows = [("-010", 0), ("0--0", 0), ("-11-", 0)]
def f(w, x, y, z):
left = (x == (not y)) # x ≡ ¬y
right = not ((not w) or x) # ¬(w → x)
return ((not left) or right) or (not z)
for order in permutations("wxyz"):
options = []
for cells, target in rows:
found = []
for cols in product(range(2), repeat=4):
v = {order[i]: cols[i] for i in range(4)}
if int(f(v["w"], v["x"], v["y"], v["z"])) != target:
continue
if all(cells[i] == "-" or int(cells[i]) == cols[i] for i in range(4)):
found.append(cols)
options.append(found)
fit = any(len({a, b, c}) == 3
for a in options[0] for b in options[1] for c in options[2])
if fit:
print("".join(order))
Вывод на демоверсии — одна строка: yxzw. Если убрать проверку len({a, b, c}) == 3 и требовать лишь, чтобы для каждой строки нашёлся хоть один набор, напечатаются две строки — xyzw и yxzw. Это и есть второй порядок, который отсекает условие о различных строках.
Отрицание рядом с == берётся в скобки: x == (not y). Без скобок Python прочитает выражение как (x == not y) и упадёт с синтаксической ошибкой. Приоритет операций в условии: ¬ сильнее ∧, ∧ сильнее ∨, дальше → и ≡ — лишние скобки дешевле пропущенных. Другие приёмы для логики на Python собраны в подборке идиом.
Ещё один пример: когда условие о строках решает всё
Функция F = ¬(z → w) ∨ (x → y) ∨ ¬x, фрагмент из трёх различных строк, во всех строках F = 0:
| Столбец 1 | Столбец 2 | Столбец 3 | Столбец 4 | F |
|---|---|---|---|---|
| 0 | 1 | 1 | 0 | |
| 0 | 1 | 0 | ||
| 0 | 0 | 0 |
Дизъюнкция трёх частей равна нулю, когда все три части нули: ¬(z → w) = 0 даёт z → w = 1, то есть не бывает «z = 1 при w = 0»; (x → y) = 0 даёт x = 1 и y = 0; ¬x = 0 снова даёт x = 1. Итак, в каждой строке x = 1, y = 0, и нет пары «z = 1, w = 0».
Столбец x не содержит нулей — это только столбец 2, где все клетки пусты. Столбец y не содержит единиц — это столбец 1. Для z и w остались столбцы 3 и 4, и каждая строка по отдельности допускает оба варианта: yxzw и yxwz. Решает условие различных строк. При yxzw во второй строке z = 1 (столбец 3), а тогда w обязан быть 1 — и вторая строка совпадает с первой: y=0, x=1, z=1, w=1. При yxwz во второй строке w = 1, z свободно, и можно взять z = 0 — все три строки различны. Ответ: yxwz. Код из раздела выше печатает ровно эту строку, а без проверки различия — обе.
Чем фрагмент с пустыми клетками отличается от заполненного
Форма с пустыми клетками действует как минимум с демоверсии 2026 года, но в сборниках и в старых шаблонах встречается и полностью заполненный фрагмент. Разница для решения:
| Фрагмент заполнен целиком | Фрагмент с пустыми клетками (демо 2026 и 2027) | |
|---|---|---|
| Условие о строках | обычно не влияет на ответ | «три различные строки» отсекает лишний порядок |
| Ручной разбор | по столбцам, без вариантов | иногда два кандидата, различие строк отсекает лишний |
| Перебор на Python | совпадение всех клеток | пустые клетки пропускают, проверяют различие наборов |
Шаблон, который требует точного совпадения всех клеток, на фрагменте с пустыми клетками вернёт пустой результат — пустая клетка со значением - никогда не равна цифре. Старый шаблон с пропуском пустых клеток, но без проверки различия строк, вернёт два ответа. Нужны обе правки.
Типичные ошибки
Пустая клетка прочитана как ноль
В демо первая строка выглядит как «пусто, 0, 1, 0». Если считать первую клетку нулём, в строке будет три нуля, и ручной разбор пойдёт по ложному пути. Пустая клетка — неизвестное значение, и в переборе её не сравнивают.
Взят первый подходящий порядок
Перебор без проверки различия строк находит два порядка. Кто берёт первый напечатанный, получает xyzw — неверно. Проверяй, что для трёх строк подобраны три разных набора.
Перепутаны импликация и эквивалентность
A → B ложно в одном случае: A = 1, B = 0. A ≡ B истинно, когда значения совпадают. В демо обе операции рядом, и путаница в любой из них меняет условия на строки. Таблицы операций — в статье 2026 года.
Ошибка приоритета при переносе в код
not w or x — это (not w) or x, так и нужно для импликации. А вот x == not y без скобок не работает вовсе. Самое надёжное — расставить скобки вокруг каждой операции при переносе формулы.
Ответ не в том порядке
В ответ идут буквы в порядке столбцов, а не в порядке упоминания переменных в условии. Первая буква — переменная первого столбца. Для демо: y, x, z, w.
Подборка ошибок по всем номерам — в статье Типичные ошибки на ЕГЭ по информатике.
Тайминг на экзамене
| Этап | Время |
|---|---|
| Перенести функцию и фрагмент в код | 1 мин |
| Запустить перебор, прочитать ответ | 30 сек |
| Проверить порядок подстановкой в одну строку | 1 мин |
| Итого | 2–3 мин |
Спецификация отводит на задание 2 три минуты, и это реально только с готовым шаблоном. Набирать перебор с нуля на экзамене — пять-семь минут, поэтому шаблон стоит выучить до автоматизма: он один и тот же для любой функции и любого фрагмента.
Как тренироваться
- Реши 10–15 заданий в форме демоверсии — с пустыми клетками и условием различных строк. Ручной разбор и перебор должны давать один ответ.
- Намеренно отключи проверку различия строк и посмотри, на каких заданиях появляется второй порядок. Так ловушка запоминается.
- Прогони шаблон на функциях с ≡ и → — именно на них чаще ошибаются при переносе в код.
- Проверяй каждый ответ подстановкой: возьми найденный порядок, подставь значения одной строки в функцию и убедись, что F совпал.
Если логика на Python ещё не отработана — сначала логика и множества в задании 15, там те же операции в другой оболочке. Как изменились остальные номера — в обзоре ЕГЭ по информатике 2027: что изменилось, а само демозадание в контексте всего варианта — в разборе демоверсии 2027.
Короткий итог
Задание 2 в 2027 году, как и в 2026-м, — фрагмент из трёх различных строк с пустыми клетками. Пустая клетка не равна нулю, а условие о различных строках отсекает лишний порядок: на демоверсии их два, xyzw и yxzw, и верный — yxzw. Перебор на Python в двадцать строк учитывает и то и другое, а ручной разбор начинается с переменной, которую фиксирует столбец F.
Задания 2 в форме демоверсии с автопроверкой есть в TuteMe: фрагменты с пустыми клетками, и у каждого задания ответ единственный именно при условии различных строк.