Sua missão, se você optar por aceitá-la, é construir um avaliador simples da verdade para os seguintes operadores lógicos:
----------------------------------------------------------------------------------
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
As tabelas de verdade estão na seguinte ordem:
- 1 1
- 1 0
- 0 1
- 0 0
A entrada virá como uma sequência simples de 0, 1 e o símbolo. Você pode aceitar a entrada como um parâmetro ou lê-la do usuário no stdin. Aqui estão alguns pares de entrada / saída de amostra:
Input: 1
Output: 1
Input: ~1
Output: 0
Input: 0|1
Output: 1
Input: 1>0
Output: 0
O operador unário (negação) sempre aparecerá antes do valor booleano, enquanto os operadores binários sempre aparecerão entre os dois valores booleanos. Você pode assumir que todas as entradas serão válidas. Strings são regulares ASCII.
Se preferir, você pode usar T e F em vez de 1 e 0. -6 para a contagem de caracteres, se você suportar os dois.
Este é o código-golfe : o código mais curto em qualquer idioma vence!
^
o nome do símbolo deve dizer sinal de intercalação .