Задание 2

    Задание 2 (демо-2023). Миша заполнял таблицу истинности логической функции F

¬(y x) \/ (z w) \/ ¬z,

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

?

?

?

?

F

 

0

 

 

0

0

1

 

 

0

1

 

 

0

0

 

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

    Решение задания на языках PascalABC.NET и Python приведено ниже.

 

PascalABC.NET

## uses School;

var T:=TrueTable((x,y,z,w)-> not (y<=x) or (z<=w) or not z);

TrueTablePrint(T,0,'xyzw');

Python

from itertools import product

def F(x, y, z, w):

     return 1 if (not (y<=x) or (z<=w) or not z)==True else 0

print('x','y','z','w','F')

for x, y, z, w in product([0,1],repeat=4):

     if F(x, y, z, w)==0:

          print( x, y, z, w, F(x, y, z, w))


    В PascalABC.NET, в модуле School, есть функции для работы с таблицами истинности. Функция TrueTable принимает логическую функцию F как лямбда-выражение четырёх переменных: (x,y,z,w) –> F(x,y,z,w). Теперь нет необходимости писать 4 вложенных цикла для рассмотрения каждого набора переменных.
    Функция TrueTablePrint(T, [0,1,2], [строка]) принимает сформированную таблицу истинности как переменную, а также число: если 0, то выведет только наборы со значением функции, равным False, если 1, то со значением True, Если ни 0 и ни 1, то выведет полную таблицу истинности. Строковый параметр нужен, чтобы обозначить столбцы таблицы переменными.

    Аналогичный код на Python написан с помощью библиотеки itertools и её функции product, которая формирует все наборы из цифр 0 и 1 длины четыре. Здесь нет специальной функции для таблиц истинности, поэтому проверяется каждый набор для заданной функции через цикл for, и в итоге выводятся те наборы переменных, при которых функция равна нулю.

    Приведенные программы позволяют лишь частично автоматизировать решение задачи, помогая построить таблицу истинности заданной функции, дальнейшее решение выполняется как и при обычном ручном способе.



Последнее изменение: Понедельник, 22 мая 2023, 18:53