R. Таблица истинности

Вся современная электронно-вычислительная техника строится на Булевой алгебре, которая оперирует истинностью и ложностью высказываний. Любой язык программирования содержит логические операции (в Python это andornot).

Чаще всего для работы со сложными высказываниями прибегают к методу под названием «Таблица истинности».
Суть метода проста — рассматриваются все возможные значения входных переменных и для них вычисляется результат.

Разработайте программу, которая для введённого сложного логического высказывания строит таблицу истинности.

Формат ввода

Вводится логическое выражение от трех переменных (abc) валидное для языка Python.

Формат вывода

Выведите таблицу истинности данного выражения.

Примечание

Для выполнения Python кода, записанного в строках, существуют две замечательные функции: exec и eval.

Пример

Ввод

not a or b and c

Вывод

a b c f
0 0 0 1
0 0 1 1
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 1

Ввод

a and not b and c

Вывод

a b c f
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 1
1 1 0 0
1 1 1 0

Решение

Достаточно простая задача. Необходимо с помощью product() подготовить различные каобинации значений переменных a, b и c и в цикле передать их вместе с выражением в качестве аргументов функции eval(). Полученый для каждого набора данных результат вывести в таблицу.

Посмотреть код

Решение

Python
from itertools import product

expression = input()
print('a b c f')
for a, b, c in product([0, 1], repeat=3):
    print(a, b, c, int(eval(expression, {'a': a, 'b': b, 'c': c})))
Подписаться
Уведомить о
guest
4 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии