Python построил фрагмент — замечаем его особенности
F = (x ∧ ¬z ∧ ¬w) ∨ (x ∧ ¬z ∧ y)
| № | ?столбец 1 | ?столбец 2 | ?столбец 3 | ?столбец 4 | F |
|---|
| У1 | 1 | — | — | — | 1 |
|---|
| У2 | 0 | — | 1 | — | 1 |
|---|
| У3 | — | — | 0 | 0 | 1 |
|---|
Пустая клетка — неизвестное значение, не ноль. Полные строки различны. С подключённым компонентом здесь работает одна изменяющаяся таблица; без скрипта доступны все шаги ниже.
Все шаги в текстовом виде — для повторения или без скрипта
Вывод программы, с которым сравниваем условие:
x y z w F
1 0 0 0 1
1 1 0 0 1
1 1 0 1 1
1. Python уже построил нужный фрагмент
Справа показаны все наборы с F = 1, в порядке x y z w. Перебирать их вручную не нужно. Найдём признаки, которые не исчезают при перестановке строк.
Действие: Какой факт действительно сохраняется, если строки вывода переставить?
Вывод: Начинаем не со сравнения строк по номерам, а с постоянных столбцов.
| № | ?столбец 1 | ?столбец 2 | ?столбец 3 | ?столбец 4 | F |
|---|
| У1 | 1 | — | — | — | 1 |
|---|
| У2 | 0 | — | 1 | — | 1 |
|---|
| У3 | — | — | 0 | 0 | 1 |
|---|
2. Один ноль исключает столбец для x
Столбец x состоит из единиц во всех подходящих строках. Сначала находим в условии столбцы с известным нулём.
Известно: x = 1; z = 0; В выводе нет w = 1, y = 0
Действие: Какой столбец остаётся для x после исключения трёх столбцов с нулями?
Вывод: x — второй столбец. Заполняем его единицами сразу во всех строках.
| № | ?столбец 1 | xстолбец 2 | ?столбец 3 | ?столбец 4 | F |
|---|
| У1 | 1 | 1 | — | — | 1 |
|---|
| У2 | 0 | 1 | 1 | — | 1 |
|---|
| У3 | — | 1 | 0 | 0 | 1 |
|---|
3. Одна единица исключает столбец для z
Теперь ищем постоянный ноль z. В первом и третьем столбцах есть 1. Второй уже занят x.
Известно: x = 1; z = 0; В выводе нет w = 1, y = 0
Действие: Какой столбец остаётся для z?
Вывод: z — четвёртый столбец. Его пропуски заполняем нулями.
| № | ?столбец 1 | xстолбец 2 | ?столбец 3 | zстолбец 4 | F |
|---|
| У1 | 1 | 1 | — | 0 | 1 |
|---|
| У2 | 0 | 1 | 1 | 0 | 1 |
|---|
| У3 | — | 1 | 0 | 0 | 1 |
|---|
4. Ищем различающую пару, а не перебираем подписи
В строке У2 столбцы 1 и 3 содержат 0 и 1. Справа среди пар (y, w) есть 00, 10, 11, но нет 01. Значит, единица в У2 не может быть w при y = 0.
Известно: x = 1; z = 0; Нельзя w = 1, y = 0
Действие: Какую переменную обозначает 0 в первом столбце строки У2?
Вывод: 0 в У2 — это w, 1 — это y. Названия найдены по одной различающей паре, без перебора всех порядков.
| № | wстолбец 1 | xстолбец 2 | yстолбец 3 | zстолбец 4 | F |
|---|
| У1 | 1 | 1 | — | 0 | 1 |
|---|
| У2 | 0 | 1 | 1 | 0 | 1 |
|---|
| У3 | — | 1 | 0 | 0 | 1 |
|---|
5. Из одной единицы получаем другую
В строке У1 дано w = 1. Справа найди единственную единицу в столбце w. Прочитай значение y в той же строке: оно и определит пропуск слева. Это поиск по признаку, а не сравнение всех строк подряд.
Известно: В выводе нет w = 1, y = 0
Действие: Допиши выведенное значение y в строке У1.
Вывод: y = 1, и вся строка У1 соответствует П3.
| № | wстолбец 1 | xстолбец 2 | yстолбец 3 | zстолбец 4 | F |
|---|
| У1 | 1 | 1 | 1 | 0 | 1 |
|---|
| У2 | 0 | 1 | 1 | 0 | 1 |
|---|
| У3 | — | 1 | 0 | 0 | 1 |
|---|
Соответствие: У1 → П3, У2 → П2.
6. Из нуля в следствии получаем ноль в посылке
В строке У3 дано y = 0. Справа найди единственный ноль в столбце y и прочитай значение w в той же строке. По этому признаку определяются сразу клетка и соответствие строки.
Известно: В выводе нет w = 1, y = 0
Действие: Допиши выведенное значение w в строке У3.
Вывод: w = 0. У3 соответствует П1. У2 с парой w = 0, y = 1 соответствует П2.
| № | wстолбец 1 | xстолбец 2 | yстолбец 3 | zстолбец 4 | F |
|---|
| У1 | 1 | 1 | 1 | 0 | 1 |
|---|
| У2 | 0 | 1 | 1 | 0 | 1 |
|---|
| У3 | 0 | 1 | 0 | 0 | 1 |
|---|
Соответствие: У1 → П3, У2 → П2, У3 → П1.
7. Проверяем ограничения, а не перебираем наборы
Проверяем логически: x = 1, z = 0; ни в одной строке нет w = 1, y = 0. Все строки различны, поэтому исходная F = 1. Соответствие строк — У1 → П3, У2 → П2, У3 → П1. Python второй раз для проверки не нужен.
Известно: x = 1; z = 0; В выводе нет w = 1, y = 0
| № | wстолбец 1 | xстолбец 2 | yстолбец 3 | zстолбец 4 | F |
|---|
| У1 | 1 | 1 | 1 | 0 | 1 |
|---|
| У2 | 0 | 1 | 1 | 0 | 1 |
|---|
| У3 | 0 | 1 | 0 | 0 | 1 |
|---|
Соответствие: У1 → П3, У2 → П2, У3 → П1.
Ответ: wxyz.