Syntax
~
nicht
/\
und
\/
oder
t
wahr
f
falsch
P
, Q
, FISH
, etc: Variablen
(Die Operatoren werden in der Rangfolge angegeben.)
Einführung
Einige Boolesche Formeln können in andere Formen geändert werden, um sie zu verkürzen. Zum Beispiel die Formel
~(~P /\ ~Q)
kann in die kürzere Form geändert werden
P\/Q
während die Formel
P \/ ~P
kann in die kürzere Form geändert werden
t
Herausforderung
In dieser Herausforderung sind Sie verpflichtet , ein Programm zu schreiben , dass, da jede Boolesche Formel nur /\
, \/
, ~
, t
, f
, Klammern, boolean Variablen (in Großbuchstaben) und Leerzeichen, gibt eine kürzeste Form (da es mehr sein kann als eine kürzeste Form ) in Zeichen des Ausdrucks, der für alle Zuweisungen der Variablen äquivalent ist. Der kürzeste Code (in einer beliebigen Sprache) gewinnt. I / O kann auf jede vernünftige Weise erfolgen.
Da sich die Antworten nur schwer überprüfen lassen, ist es hilfreich (aber nicht erforderlich), eine kurze Erläuterung der Funktionsweise des Codes beizufügen.
BooleanMinimize
) tunb9c98d088b78c30bb2108008a064a7b95722a4694d90ddad94a025c2eb4ed30a
. Ich werde den eigentlichen Code zu einem späteren Zeitpunkt veröffentlichen, da ich die Kreativität nicht unterdrücken möchte.Antworten:
Oh richtig, ich habe vergessen, meine Antwort jemals wirklich zu posten. Es verwendet im Wesentlichen denselben Ansatz wie die Antwort von KSab , gibt jedoch nur den kürzesten gültigen Ausdruck aus.
Python3, 493
Beachten Sie, dass der Hash, den ich zuvor berechnet habe, die abschließende Newline enthielt, bevor ich Golf gespielt
def e(x): return
habee=lambda x:
quelle
Python 616
Nicht besonders effizient, arbeitet aber in angemessener Zeit für Eingaben, deren Ergebnisse etwa 5 oder 6 Zeichen betragen. Um eine Zeichenfolge auf Übereinstimmung zu prüfen, durchläuft sie alle möglichen Kombinationen von Wahr- und Falschwerten für alle Variablen und stellt sicher, dass alle übereinstimmen. Damit prüft es jeden möglichen String, der aus den relevanten Zeichen besteht (nicht einmal notwendigerweise ein syntaktisch korrekter).
Tatsächlich wird jeder äquivalente Ausdruck (in jeder Größe) gedruckt und wird nie beendet.
Code:
Eingabe / Ausgabe:
quelle