Задача (А. Рогов)
Логическая функция F задаётся выражением:
Дан частично заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F. Определите, какому столбцу таблицы истинности соответствует каждая из переменных w, x, y, z.
В ответе напишите буквы w, x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Что от нас хотят
Нам дано логическое выражение, содержащее четыре переменные x, y, z, w. Эти переменные могут иметь значения 1 или 0. Результатом выполнения логического выражения (F), является результат выполнения всех логических операций указанных в выражении.
Нас просят восстановить порядок переменных x, y, z, w внутри фрагмента таблицы истинности. В этой таблице истинности результат логического выражения всегда ложь (Falce) или логический ноль.
Записываем логическое выражение в Python
Используя таблицу выше, нам нужно записать наше логическое выражение (w≡y)∨((¬x→z)∧(¬z→y)) на языке программирования Python. Причём важно знать, что порядок выполнения логических операций в Python отличается, поэтому отрицание мы всегда берём в скобки.
Получается:
Перебираем все значения переменных с помощью вложенного цикла
С записью логического выражения в Python, разобрались. Теперь нам нужно в это выражение подставить все возможные сочетания переменных. Которые могут принимать значения 0 и 1.
Для этого Используем вложенный цикл for
С помощью этого цикла мы проходимся по всем значениям x, y, z, w. Точно так же, как если бы мы составляли таблицу истинности.
Используем оператор условия if для проверки результата логического выражения
Теперь логическое выражение у нас есть. Переменные перебирать мы научились. Нам нужно связать переменные и логическое выражение, так чтобы они подставлялись в него. Причём нас интересуют только те случаи, в которых логическое выражение равно нулю из условия задачи.
Так и запишем в теле цикла if(если) дальше наше выражение равно нулю
По сути всё готово, остаётся только вывести результат на экран.
Выводим результат на экран в удобном для нас формате
Нам нужно вывести на экран значения x, y, z, w при которых логическое значение равно нулю. Так и напишем
print(x, y, z, w, 0).
Ноль писать в конце не обязательно, мы его пишем, для того чтобы максимально приблизить запись к фрагменту таблицы. Поэтому предлагаю ещё в самом начале добавить шапку где будет видно обозначения переменных: print('x y z w F')
Сопоставляем результат программы с таблицей истинности из задачи
Так как только переменная z, во всех случаях принимает значение ноль, мы можем смело сказать что в таблице она будет в четвёртом столбике. Просто потому что в остальных столбцах уже есть единицы.
Дальше обратимся внимание на то что у переменных X и Y по одной единице, соответственно они не могут быть в третьем столбике. Значит там мы смело ставим W.
Остались только Х и У. И можно заметить, что при У=1, Z и W=0. Значит У будет в первом столбце, а Х во втором.
Ответ: yxwz
По сути сама программа на Python, для других подобных задач будет точно такой же. Меняться будет только само логическое выражение. И если в таблице в столбике F будут единицы(True) , а не нули(Falce), то сравнивать это логическое выражение мы будем с 1.
Ставьте лайки и подписывайтесь на канал.