Задание №2: Таблицы истинности логических функций
Основные типы и прототипы задания №2:
Построение таблицы истинности
Частично заполненные фрагменты
Сопоставление строк и столбцов
Условие задания
(В.Н. Шубинкин) Логическая функция F задаётся выражением (x → w) ∧ (y → z) ∨ w. Ниже приведён частично заполненный фрагмент таблицы истинности этой функции, содержащий неповторяющиеся строки. Сколькими способами можно поставить в соответствие переменные w, x, y, z столбцам таблицы истинности функции F, опираясь на информацию из данного фрагмента?
Пример. Функция F задана выражением x ∨ y ∨ z, а фрагмент таблицы истинности имеет вид:
В этом случае переменные можно расставить любым способом, значит, ответом будет число 6.
Ответ:
3
Шаблон решения на Python
# === Задание 2: Таблица истинности логической функции ===
from itertools import product, permutations
def f(x, y, z, w):
# Подставьте формулу из условия задания:
return (not(x <= y)) or (y == z) or not(w)
for a1, a2, a3, a4 in product([0, 1], repeat=4):
table = [
(a1, 0, 0, 1),
(0, a2, 1, 0),
(1, 0, a3, a4)
]
if len(set(table)) == len(table):
for p in permutations('xyzw'):
if all(f(**dict(zip(p, row))) == 0 for row in table):
print("Порядок переменных:", ''.join(p))