Sintaxe
~
não
/\
e
\/
ou
t
verdadeiros
f
falsos
P
, Q
, FISH
, etc: variáveis
(Os operadores são dados em ordem de precedência)
Introdução
Algumas fórmulas booleanas podem ser alteradas para formas diferentes para torná-las mais curtas. Por exemplo, a fórmula
~(~P /\ ~Q)
pode ser alterado para a forma mais curta
P\/Q
enquanto a fórmula
P \/ ~P
pode ser alterado para a forma mais curta
t
Desafio
Neste desafio, você é obrigado a escrever um programa que, dado qualquer fórmula booleana usando apenas /\
, \/
, ~
, t
, f
, parênteses variáveis booleanas (em letras maiúsculas), e espaços em branco, produz uma forma mais curta (uma vez que pode haver mais de uma forma mais curta ) em caracteres dessa expressão que é equivalente a todas as atribuições das variáveis. O código mais curto (em qualquer idioma) vence. A E / S pode ser feita de qualquer maneira razoável.
Além disso, como as respostas são difíceis de verificar, seria útil (mas não obrigatório) incluir uma breve explicação de como o código funciona.
BooleanMinimize
)
b9c98d088b78c30bb2108008a064a7b95722a4694d90ddad94a025c2eb4ed30a
. Postarei o código real em uma data posterior, pois não quero sufocar a criatividade.