Синтаксис
~
не
/\
и
\/
или
t
истинные
f
ложные
P
, Q
, FISH
и т.д.: переменные
(Операторы даны в порядке приоритета)
Вступление
Некоторые логические формулы могут быть изменены в различные формы, чтобы сделать их короче. Например, формула
~(~P /\ ~Q)
можно изменить на более короткую форму
P\/Q
в то время как формула
P \/ ~P
можно изменить на более короткую форму
t
Вызов
В этих проблемах, вы должны написать программу , которая при любом булева формулы с использованием только /\
, \/
, ~
, t
, f
, скобок, логические переменных (в верхнем регистре), и пробелов, выводит короткую форму (поскольку может быть больше одного кратчайшей формой ) в символах того выражения, которое эквивалентно для всех назначений переменных. Самый короткий код (на любом языке) выигрывает. Ввод / вывод может быть выполнен любым разумным способом.
Кроме того, поскольку ответы трудно проверить, было бы полезно (но не обязательно) включить краткое объяснение того, как работает код.
BooleanMinimize
)b9c98d088b78c30bb2108008a064a7b95722a4694d90ddad94a025c2eb4ed30a
. Фактический код я опубликую позже, потому что не хочу задушить креативность.Ответы:
Ах да, я забыл когда-либо фактически публиковать свой ответ. По сути, он использует тот же подход, который использует ответ KSab , но печатает только самое короткое допустимое выражение.
Python3, 493
Обратите внимание, что хэш, который я вычислил ранее, включал завершающий символ новой строки и был до того, как начал играть
def e(x): return
в гольфe=lambda x:
источник
Python 616
Не особенно эффективно, но работает в разумные сроки для входных данных, результаты которых составляют около 5 или 6 символов. Чтобы проверить строку, чтобы увидеть, соответствует ли она, она просматривает все возможные комбинации значений истина / ложь для всех переменных и проверяет, согласна ли каждая из них. Используя это, он проверяет каждую возможную строку, состоящую из соответствующих символов (даже не обязательно синтаксически правильную).
Фактически он напечатает каждое эквивалентное выражение (любого размера) и фактически никогда не завершится.
Код:
Вход / выход:
источник