Wenn Sie sich dafür entscheiden, dies zu akzeptieren, besteht Ihre Mission darin, einen einfachen Wahrheitsbewerter für die folgenden logischen Operatoren zu erstellen:
----------------------------------------------------------------------------------
Logical Name | Gate Name | Symbol | Symbol Name | Truth Table
----------------------------------------------------------------------------------
Identity | is | | (none) | 10
Negation | not | ~ | tilde | 01
Conjunction | and | & | ampersand | 1000
Disjunction | or | | | pipe | 1110
Negative Conjunction | nand | ^ | caret | 0111
Joint Denial | nor | v | "vee" | 0001
Exclusive Disjunction | xor | x | "ecks" | 0110
Equivalence | equals/xnor | = | equals | 1001
Implication | implies | > | greater than | 1011
Wahrheitstabellen sind in der folgenden Reihenfolge:
- 1 1
- 1 0
- 0 1
- 0 0
Die Eingabe erfolgt als einfache Zeichenfolge aus 0, 1 und dem Symbol. Sie können Eingaben entweder als Parameter akzeptieren oder vom Benutzer auf stdin lesen. Hier sind einige Beispiele für Eingabe- / Ausgabepaare:
Input: 1
Output: 1
Input: ~1
Output: 0
Input: 0|1
Output: 1
Input: 1>0
Output: 0
Der unäre Operator (Negation) wird immer vor dem booleschen Wert angezeigt, während die binären Operatoren immer zwischen den beiden booleschen Werten angezeigt werden. Sie können davon ausgehen, dass alle Eingaben gültig sind. Strings sind reguläre ASCII-Strings.
Wenn Sie es vorziehen, können Sie T und F anstelle von 1 und 0 verwenden. -6 für Ihre Zeichenanzahl, wenn Sie beide unterstützen.
Das ist Code-Golf : Der kürzeste Code in jeder Sprache gewinnt!
^
, der Symbolname sollte Caret sagen .