Su misión, si elige aceptarla, es construir un evaluador de verdad simple para los siguientes 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
Las tablas de verdad están en el siguiente orden:
- 1 1
- 1 0
- 0 1
- 0 0
La entrada vendrá como una cadena simple de 0, 1 y el símbolo. Puede aceptar la entrada como parámetro o leerla del usuario en stdin. Aquí hay algunos pares de entrada / salida de muestra:
Input: 1
Output: 1
Input: ~1
Output: 0
Input: 0|1
Output: 1
Input: 1>0
Output: 0
El operador unario (negación) siempre aparecerá antes del valor booleano, mientras que los operadores binarios siempre aparecerán entre los dos valores booleanos. Puede suponer que todas las entradas serán válidas. Las cadenas son cadenas ASCII normales.
Si lo prefieres, puedes usar T y F en lugar de 1 y 0. -6 para tu recuento de personajes si admites ambos.
Esto es code-golf : ¡el código más corto en cualquier idioma gana!
^
el nombre del símbolo debería decir caret .