Se ti ricordi dei tuoi anni di scuola, potresti ricordare di aver appreso le Tabelle della verità . Sembravano noiosi, ma sono la base della logica e (alcuni direbbero) tutti i computer ...
Problema
La tua missione, se decidi di accettarla, è quella di scrivere un programma, una funzione o un widget di codice in grado di generare input in una tabella di verità.
Ingresso
L'input sarà una stringa (come la struttura dei dati) contenente l'istruzione logica in cui trasformare la Tabella della verità. Per esempio:
p ∧ q
Ciò significa p and q
(coniugazione logica) e produrrà:
p q p ∧ q
T T T
T F F
F T F
F F F
Notare la spaziatura: l'elemento della colonna è al centro dell'intestazione
Personaggi
Punteggio tramite caratteri, non byte I caratteri di confronto logico sono speciali e non sempre come sono. Usa questi personaggi:
Congiunzione logica (AND): ∧
U + 2227
Disgiunzione logica (OR): ∨
U + 2228
Negazione logica (NOT) ~
o¬
U + 7e e U + ac rispettivamente
bonus
Tutti questi bonus sono opzionali, ma elimineranno i punti del tuo punteggio. Scegli qualsiasi.
Negazione logica
La negazione logica è un operatore unario nelle tabelle di verità. È l'equivalente di !
nella maggior parte dei linguaggi basati su C. Fa false
=> true
e viceversa. È annotato con un ¬
o ~
(è necessario supportare entrambi). Sostenere questo eliminerà il 10% del tuo punteggio. Tuttavia, è necessario aggiungere una colonna aggiuntiva per mostrare i risultati: Ad esempio:
~p ∧ q
produrrà:
p ~p q ~p ∧ q
T F T F
T F F F
F T T T
F T F F
Bella stampa
La normale notazione da tavolo è noiosa. Rendiamolo carino! Il formato di stampa grazioso è il seguente per p ∧ q
è il seguente:
+---+---+-------+
| p | q | p ∧ q |
+---+---+-------+
| T | T | T |
+---+---+-------+
| T | F | F |
+---+---+-------+
| F | T | F |
+---+---+-------+
| F | F | F |
+---+---+-------+
Dettagli speciali per una stampa carina:
- C'è un'imbottitura di 1 spazio in ogni cella
- I valori delle celle sono ancora centrati
Se stampi piuttosto le tue tabelle, dal tuo codice e poi moltiplica per 0,6. Usa questa funzione per questo bonus:
score = 0.6 * code
Esempi
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
Regole
- Si applicano scappatoie standard
- Nessuna risorsa esterna
- Se hai intenzione di infrangere le regole, sii intelligente;)
Il codice più breve (in caratteri) vince. In bocca al lupo!
score = 0.6 * (code - 15)
=.6 * code - 9
p
q
e r
in una tabella di verità;)
p
eq
. A meno che non abbiano sempre questi nomi, potresti voler mostrare alcune diverse opzioni negli esempi di test. Sono sempre una singola lettera?