Синтаксис
~
не
/\
и
\/
или
t
истинные
f
ложные
P
, Q
, FISH
и т.д.: переменные
(Операторы даны в порядке приоритета)
Вступление
Некоторые логические формулы могут быть изменены в различные формы, чтобы сделать их короче. Например, формула
~(~P /\ ~Q)
можно изменить на более короткую форму
P\/Q
в то время как формула
P \/ ~P
можно изменить на более короткую форму
t
Вызов
В этих проблемах, вы должны написать программу , которая при любом булева формулы с использованием только /\
, \/
, ~
, t
, f
, скобок, логические переменных (в верхнем регистре), и пробелов, выводит короткую форму (поскольку может быть больше одного кратчайшей формой ) в символах того выражения, которое эквивалентно для всех назначений переменных. Самый короткий код (на любом языке) выигрывает. Ввод / вывод может быть выполнен любым разумным способом.
Кроме того, поскольку ответы трудно проверить, было бы полезно (но не обязательно) включить краткое объяснение того, как работает код.
BooleanMinimize
)
b9c98d088b78c30bb2108008a064a7b95722a4694d90ddad94a025c2eb4ed30a
. Фактический код я опубликую позже, потому что не хочу задушить креативность.