Разбор 2.PNG

Тип 2 № 56502

Логическая функция F задаётся выражением:

((*x* → *y*)∨(*z* → *w*))∧((*z* ≡ *y*) → (*w* ≡ *x*)).

Дан частично заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F.

Определите, какому столбцу таблицы истинности соответствует каждая из переменных w, x, y, z.

Untitled

Untitled

Комментарии к коду решения:

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