Si recuerdas tus años de escuela, tal vez recuerdes haber aprendido sobre las Tablas de la verdad . Parecían aburridos, pero son la base de la lógica y (algunos argumentarían) toda la informática ...
Problema
Su misión, si elige aceptarla, es escribir un programa, función o widget de código que pueda generar una entrada de tabla de verdad.
Entrada
La entrada será una cadena (como la estructura de datos) que contiene la declaración lógica para hacer la tabla de verdad. Por ejemplo:
p ∧ q
Esto significa p and q
(conjunción lógica) y generará:
p q p ∧ q
T T T
T F F
F T F
F F F
Observe el espaciado: el elemento de la columna está en el centro del encabezado
Caracteres
Puntuación a través de caracteres, no bytes Los caracteres de comparación lógica son especiales y no siempre se ven como son. Usa estos personajes:
Conjunción Lógica (Y): ∧
U + 2227
Disyunción lógica (OR): ∨
U + 2228
Negación lógica (NO) ~
o ¬
U + 7e y U + ac respectivamente
Bonos
Todos estos bonos son opcionales, pero eliminarán puntos de su puntaje. Elige cualquiera.
Negación Lógica
La negación lógica es un operador unario en las tablas de verdad. Es el equivalente de !
en la mayoría de los lenguajes basados en C. Hace false
=> true
y viceversa. Se anota con un ¬
o ~
(debe admitir ambos). Apoyar esto eliminará el 10% de su puntaje. Sin embargo, debe agregar una columna adicional para mostrar sus resultados: Por ejemplo:
~p ∧ q
dará salida:
p ~p q ~p ∧ q
T F T F
T F F F
F T T T
F T F F
Impresión bonita
La notación de tabla normal es aburrida. ¡Hagámoslo bonito! El formato de impresión bonito es el siguiente, ya que p ∧ q
es el siguiente:
+---+---+-------+
| p | q | p ∧ q |
+---+---+-------+
| T | T | T |
+---+---+-------+
| T | F | F |
+---+---+-------+
| F | T | F |
+---+---+-------+
| F | F | F |
+---+---+-------+
Detalles especiales para una bonita impresión:
- Hay un espacio de 1 espacio en cada celda
- Los valores de celda aún están centrados
Si imprime bien sus tablas, desde su código y luego multiplique por 0.6. Use esta función para este bono:
score = 0.6 * code
Ejemplos
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
Reglas
- Se aplican lagunas estándar
- Sin recursos externos
- Si vas a romper las reglas, sé inteligente;)
El código más corto (en caracteres) gana. ¡Buena suerte!
score = 0.6 * (code - 15)
=.6 * code - 9
p
q
y r
en una tabla de verdad;)
p
yq
. A menos que siempre tengan estos nombres, es posible que desee mostrar algunas opciones diferentes en los ejemplos de prueba. ¿Son siempre una sola letra?