Задание №2. Таблицы истинности: какой столбец какая переменная
Что от тебя хотят
В условии записана функция, например (x ∨ y) ∧ ¬(y ≡ z) ∧ ¬w, и кусок таблицы истинности. В таблице столбцы названы не x, y, z, w, а просто «Перем. 1, 2, 3, 4», да ещё и в перепутанном порядке, и часть клеток пустая. Надо выяснить, какая переменная стоит в каком столбце.
Идея: настоящую таблицу пусть напечатает Python
Всего у функции 16 наборов значений. Мы просим компьютер перебрать все 16 и показать только те строки, где F равна нужному значению. Дальше остаётся сопоставление глазами: берём строки из условия и ищем им «двойников» в нашей распечатке.
Как записывать операции на Python
| Операция | В условии | В Python |
|---|---|---|
| НЕ | ¬A | not A |
| И | A ∧ B | A and B |
| ИЛИ | A ∨ B | A 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 | Перем. 4 | F |
|---|---|---|---|---|
| 1 | 1 | 1 | ||
| 0 | 1 | 0 | 1 | |
| 1 | 1 | 0 | 1 |
Печатаем программой (первый блок кода ниже) все строки, где F = 1. Их всего три:
| x | y | z | w |
|---|---|---|---|
| 0 | 1 | 0 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
- Ищем w. В распечатке w всегда 0. В столбцах 1, 2 и 3 условия есть единицы, а в столбце 4 только нули. Значит столбец 4 это w.
- Ищем y и z. Из
¬(y ≡ z)следует, что y и z в каждой строке разные. Столбцы 2 и 3 в третьей строке дают1, 1, столбцы 1 и 3 в первой строке тоже1, 1. Остаётся пара 1 и 2, а x стоит в столбце 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 года.
Разновидности и прототипы задания на экзамене
not перед функцией.Код решения на Python
Запустить код в онлайн-песочнице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)
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: Таблица почти пустая
В фрагменте заполнено всего по одной-две клетки в строке, и на глаз столбцы не определить. Вариантов раскладки может быть несколько.
Лайфхаки на экзамене
- Импликацию A → B пиши как
(A <= B): она ложна только при 1 → 0, ровно как сравнение1 <= 0. - Сумма значений в столбце равна числу единиц в нём. Столбец с редким количеством единиц находится первым.
- Строку, где почти все клетки заполнены, ищи в распечатке в первую очередь.