Статья Автор: Деникина Н.В., Деникин А.В.

Четыре вложенных цикла

Что поручим программе

Для формулы из задания 2024 года получим только те наборы, у которых F = 1. Именно такое значение F указано во всех строках условия.

F = (¬x ∧ y ∧ z ∧ ¬w) ∨ (¬x ∧ y ∧ ¬z ∧ ¬w) ∨ (x ∧ y ∧ z ∧ ¬w)

Перебрать значения→Вычислить F→Напечатать строку, если F = 1
Как записать формулу на Python

¬x → not x
∧ → and
∨ → or

Три скобки сохраняем и соединяем через or. Функция int(...) превращает результат проверки в 0 или 1.



Разберём работу программы

Четыре цикла выбирают по одному значению для x, y, z и w. У каждой переменной два варианта, поэтому программа проверит 2 · 2 · 2 · 2 = 16 наборов.

Строка F = ... вычисляет результат формулы для текущего набора.

Условие if F == 1 пропускает к печати только нужные строки. print стоит с отступом внутри if: при F = 0 строка не печатается.

Вывод программы: только строки с F = 1
xyzwF
01001
01101
11101

Вся таблица не выводится. Здесь три набора, которые прошли проверку F == 1.

Что мы узнали, а что ещё нужно найти

Подписи x, y, z, w над выводом задали мы сами командой print(x, y, z, w, F). Они ещё не являются порядком столбцов в условии.

Посмотрим на постоянные значения: в столбце y везде стоит 1, а в столбце w — 0. Сравним эти свойства с известными клетками условия и определим возможные места для y и w.

Строки в условии могут идти в другом порядке. Сопоставляем значения и их связи; одинаковые номера строк ещё не означают совпадение.


Проверим понимание

Цикл проверил очередной набор и получил F = 0. Что напечатает показанная программа для этого набора?

Печать