Votre mission, si vous choisissez de l'accepter, est de construire un simple évaluateur de vérité pour les opérateurs logiques suivants:
----------------------------------------------------------------------------------
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
Les tables de vérité sont dans l'ordre suivant:
- 1 1
- dix
- 0 1
- 0 0
L'entrée viendra comme une simple chaîne de 0, 1 et le symbole. Vous pouvez soit accepter l'entrée en tant que paramètre, soit la lire à l'utilisateur sur stdin. Voici quelques exemples de paires d'entrée / sortie:
Input: 1
Output: 1
Input: ~1
Output: 0
Input: 0|1
Output: 1
Input: 1>0
Output: 0
L'opérateur unaire (négation) apparaîtra toujours avant la valeur booléenne, tandis que les opérateurs binaires apparaîtront toujours entre les deux valeurs booléennes. Vous pouvez supposer que toutes les entrées seront valides. Les chaînes sont des chaînes ASCII normales.
Si vous préférez, vous pouvez utiliser T et F plutôt que 1 et 0. -6 pour votre nombre de personnages si vous supportez les deux.
C'est le code-golf : le code le plus court dans n'importe quelle langue gagne!
^
le nom du symbole de devrait dire caret .