
Тип 2 № 56502
Логическая функция F задаётся выражением:
((*x* → *y*)∨(*z* → *w*))∧((*z* ≡ *y*) → (*w* ≡ *x*)).
Дан частично заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F.
Определите, какому столбцу таблицы истинности соответствует каждая из переменных w, x, y, z.


Комментарии к коду решения:
from itertools import * - Импортируем все функци из модуля itertools.def F(x, y, z, w): - Определяем функцию F с четырьмя параметрами x, y, z, w.return ((x <= y) or (z <= w)) and ((z == y) <= (w == x)) - Возвращаем результат логического выражения.for a1, a2, a3, a4 in product([0, 1], repeat=4): - Запускаем итерацию по всем возможным комбинациям 0 и 1 для переменных a1, a2, a3, a4 (кол-во переменных зависит от кол-ва пропусков в таблице).table = [(a1, 1, 0, a2), (0, 1, 0, 1), (a3, 1, 0, a4)] - Формируем таблицу истинности значений по заданным правилам (из условия).if len(set(table)) == len(table): - Проверяем, что все строки в таблице уникальны.for i in permutations('xyzw'): - Запускаем итерацию по всем перестановкам символов 'xyzw'.