Задание №2 ЕГЭ по информатике: разбор, шаблоны кода Python и анти-примеры | СмартКИМ
СмартКИМ УДОБНАЯ ПОДГОТОВКА К ЕГЭ И ОГЭ
Задачи №2 Решать в тренажере Войти в СмартКИМ
ЕГЭ (1–27) ОГЭ (1–15) Python: шпаргалка
Быстрый переход по номерам и темам
Базовый (1 балл) Время: 2-4 мин Python Вложенные циклы and / or / not Все задачи №2 в каталоге

Задание №2. Таблицы истинности: какой столбец какая переменная

Тема: Функция от четырёх переменных, перебор через вложенные циклы, сопоставление столбцов
Дана логическая функция и обрезок её таблицы истинности, где не подписано, какой столбец какой переменной принадлежит. Печатаем настоящую таблицу кодом и сопоставляем столбцы.

Что от тебя хотят

В условии записана функция, например (x ∨ y) ∧ ¬(y ≡ z) ∧ ¬w, и кусок таблицы истинности. В таблице столбцы названы не x, y, z, w, а просто «Перем. 1, 2, 3, 4», да ещё и в перепутанном порядке, и часть клеток пустая. Надо выяснить, какая переменная стоит в каком столбце.

Идея: настоящую таблицу пусть напечатает Python

Всего у функции 16 наборов значений. Мы просим компьютер перебрать все 16 и показать только те строки, где F равна нужному значению. Дальше остаётся сопоставление глазами: берём строки из условия и ищем им «двойников» в нашей распечатке.

Как записывать операции на Python

ОперацияВ условииВ Python
НЕ¬Anot A
ИA ∧ BA and B
ИЛИA ∨ BA or B
ИмпликацияA → B(A <= B)
ЭквивалентностьA ≡ B(A == B)
Исключающее ИЛИA ⊕ B(A != B)

Импликация ложна только в одном случае: 1 → 0. Поэтому A <= B работает: из чисел 0 и 1 неверно только 1 <= 0.

Скобки вокруг каждой импликации — обязательно. Запись x <= y and z <= w без скобок Python читает как цепочку сравнений, и таблица получится не той.

Разбор на живом примере

Функция F = (x ∨ y) ∧ ¬(y ≡ z) ∧ ¬w. Ниже фрагмент таблицы с неповторяющимися строками, где F = 1 во всех строках. Определите, какому столбцу какая переменная соответствует.

Перем. 1Перем. 2Перем. 3Перем. 4F
111
0101
1101

Печатаем программой (первый блок кода ниже) все строки, где F = 1. Их всего три:

xyzw
0100
1010
1100
  1. Ищем w. В распечатке w всегда 0. В столбцах 1, 2 и 3 условия есть единицы, а в столбце 4 только нули. Значит столбец 4 это w.
  2. Ищем y и z. Из ¬(y ≡ z) следует, что y и z в каждой строке разные. Столбцы 2 и 3 в третьей строке дают 1, 1, столбцы 1 и 3 в первой строке тоже 1, 1. Остаётся пара 1 и 2, а x стоит в столбце 3.
  3. Разводим y и z. Пробуем y в столбце 1. Первая строка: y = 1, x = 1, это 1 1 0 0. Вторая: y = 0, z = 1, это 1 0 1 0. Третья: z = 1, x = 1, тоже 1 0 1 0. Две одинаковые строки, а по условию повторов нет. Значит в столбце 1 стоит z, а в столбце 2 y.

Ответ: zyxw. Это задача из демоверсии 2026 года.

Не получается сопоставить с первого раза? Посчитай, сколько единиц в каждом столбце распечатки и в каждом столбце условия. Столбцы с редкими значениями находятся первыми.

Разновидности и прототипы задания на экзамене

Тип 1: Во всех строках фрагмента F = 1
Печатаем только строки, где функция истинна, и ищем в них строки из фрагмента.
Тип 2: Во всех строках фрагмента F = 0
То же самое, но в условие цикла ставим not перед функцией.
Тип 3: Есть и нули, и единицы
Печатаем таблицу целиком с отдельным столбцом F.

Код решения на Python

Запустить код в онлайн-песочнице
Печатаем строки, где F = 1
print("x y z w")
for x in 0, 1:
    for y in 0, 1:
        for z in 0, 1:
            for w in 0, 1:
                if (x or y) and (y != z) and (not w):
                    print(x, y, z, w)
Печатаем всю таблицу со столбцом F
print("x y z w F")
for x in 0, 1:
    for y in 0, 1:
        for z in 0, 1:
            for w in 0, 1:
                f = (x or y) and (y != z) and (not w)
                print(x, y, z, w, int(f))

Типичные ошибки

✕ Не так
Писать импликации без скобок
x <= y and z <= w Python прочитает как цепочку сравнений.
✓ Так
Каждую импликацию в скобки: (x <= y) and (z <= w).
✕ Не так
Брать побитовые знаки вместо слов
&, |, ~ стоят в приоритете выше сравнений, и логика развалится.
✓ Так
Писать and, or, not, ==, !=.
ГРОБ

ГРОБ №2: Таблица почти пустая

В фрагменте заполнено всего по одной-две клетки в строке, и на глаз столбцы не определить. Вариантов раскладки может быть несколько.

Как обойти
Выпиши все допустимые строки, затем считай единицы в каждом столбце и сравнивай с условием. Если и этого мало, переберёшь все 24 порядка столбцов на бумаге: для каждого порядка проверь, что у каждой строки фрагмента нашёлся свой двойник.

Лайфхаки на экзамене

  1. Импликацию A → B пиши как (A <= B): она ложна только при 1 → 0, ровно как сравнение 1 <= 0.
  2. Сумма значений в столбце равна числу единиц в нём. Столбец с редким количеством единиц находится первым.
  3. Строку, где почти все клетки заполнены, ищи в распечатке в первую очередь.
Банк реальных задач №2 Открыть в тренажере СмартКИМ