Wenn Sie sich an Ihre Schulzeit erinnern, erinnern Sie sich vielleicht an das Lernen von Wahrheitstabellen . Sie schienen langweilig, aber sie sind Grundlage für Logik und (einige würden argumentieren) alle Computer ...
Problem
Wenn Sie dies akzeptieren möchten, besteht Ihre Mission darin, ein Programm, eine Funktion oder ein Widget aus Code zu schreiben, mit dem eine Wahrheitstabelle ausgegeben werden kann.
Eingang
Die Eingabe ist eine Zeichenfolge (wie eine Datenstruktur), die die logische Anweisung enthält, in die die Wahrheitstabelle umgewandelt werden soll. Beispielsweise:
p ∧ q
Dies bedeutet p and q
(logische Konjunktion) und gibt Folgendes aus:
p q p ∧ q
T T T
T F F
F T F
F F F
Beachten Sie den Abstand: Das Element der Spalte befindet sich in der Mitte der Überschrift
Zeichen
Punktzahl über Zeichen, nicht Bytes Die logischen Vergleichszeichen sind etwas Besonderes und nicht immer so, wie sie aussehen. Verwenden Sie diese Zeichen:
Logische Verknüpfung (AND): ∧
U + 2227
Logische Disjunktion (OR): ∨
U + 2228
Logische Negation (NOT) ~
oder ¬
U + 7e bzw. U + ac
Boni
Alle diese Boni sind optional, bringen aber Punkte aus Ihrer Punktzahl. Wählen Sie eine aus.
Logische Verneinung
Logische Negation ist ein unärer Operator in Wahrheitstabellen. Dies entspricht den !
meisten C-basierten Sprachen. Es macht false
=> true
und umgekehrt. Es ist mit einem ¬
oder gekennzeichnet ~
(Sie müssen beide unterstützen). Wenn Sie dies unterstützen, können Sie 10% Ihrer Punktzahl verlieren. Sie müssen jedoch eine zusätzliche Spalte hinzufügen, um die Ergebnisse anzuzeigen: Beispiel:
~p ∧ q
wird ausgeben:
p ~p q ~p ∧ q
T F T F
T F F F
F T T T
F T F F
Hübscher Druck
Die normale Tischnotation ist langweilig. Lass es uns hübsch machen! Hübsches Druckformat ist wie folgt für p ∧ q
ist wie folgt:
+---+---+-------+
| p | q | p ∧ q |
+---+---+-------+
| T | T | T |
+---+---+-------+
| T | F | F |
+---+---+-------+
| F | T | F |
+---+---+-------+
| F | F | F |
+---+---+-------+
Spezielle Details für hübsches Drucken:
- In jeder Zelle befindet sich ein Leerzeichen
- Zellwerte sind weiterhin zentriert
Wenn Sie Ihre Tabellen schön drucken, aus Ihrem Code und dann mit 0,6 multiplizieren. Nutzen Sie diese Funktion für diesen Bonus:
score = 0.6 * code
Beispiele
p ∧ q
:
p q p ∧ q
T T T
T F F
F T F
F F F
p ∨ q
:
p q p ∨ q
T T T
T F T
F T T
F F F
~p ∧ q
:
p ~p q ~p ∧ q
T F T F
T F F F
F T T T
F T F F
~p ∨ q
:
p ~p q ~p ∧ q
T F T T
T F F F
F T T T
F T F T
Regeln
- Es gelten Standardlücken
- Keine externen Ressourcen
- Wenn du die Regeln brechen willst, sei schlau;)
Kürzester Code (in Zeichen) gewinnt. Viel Glück!
score = 0.6 * (code - 15)
=.6 * code - 9
p
q
und r
in einer Wahrheitstabelle sehen;)
p
undq
. Sofern sie nicht immer diese Namen haben, möchten Sie möglicherweise in den Testbeispielen einige verschiedene Optionen anzeigen. Sind sie immer ein einzelner Buchstabe?