Sintaxis
~
No
/\
y
\/
o
t
verdaderos
f
falsos
P
, Q
, FISH
, etc: Variables
(Los operadores se dan en orden de precedencia)
Introducción
Algunas fórmulas booleanas se pueden cambiar a diferentes formas para acortarlas. Por ejemplo, la fórmula
~(~P /\ ~Q)
se puede cambiar a la forma más corta
P\/Q
mientras que la fórmula
P \/ ~P
se puede cambiar a la forma más corta
t
Desafío
En este desafío, se le requiere para escribir un programa que, dado cualquier fórmula booleana utilizando únicamente /\
, \/
, ~
, t
, f
, paréntesis variables booleanas (en mayúsculas), y un espacio en blanco, da salida a una forma más corta (ya que puede haber más de una forma más corta ) en caracteres de esa expresión que es equivalente para todas las asignaciones de las variables. El código más corto (en cualquier idioma) gana. La E / S se puede hacer de cualquier manera razonable.
Además, dado que las respuestas son difíciles de verificar, sería útil (pero no es obligatorio) incluir una breve explicación de cómo funciona el código.
BooleanMinimize
)
b9c98d088b78c30bb2108008a064a7b95722a4694d90ddad94a025c2eb4ed30a
. Publicaré el código real en una fecha posterior, ya que no quiero sofocar la creatividad.