Sono sicuro che molti di noi hanno visto risultati SQL in un terminale, tutti accuratamente formattati in righe e colonne. In caso contrario, ecco un esempio:
+----------+-----------+----------------+
| column 1 | column 2 | column 3 |
+----------+-----------+----------------+
| data | more data | even more data |
| etc | just goes | on and on |
+----------+-----------+----------------+
Il tuo obiettivo per questa sfida è, dati le colonne e i dati di riga per una tabella, disegnare la tabella in questo stile. Dovrebbe esserci una linea orizzontale nella parte superiore e inferiore della tabella e una a destra sotto la riga di intestazione. Dovrebbero esserci linee verticali tra ogni colonna e una su entrambi i lati della tabella. È necessario utilizzare i tubi per le linee verticali, i trattini per le linee orizzontali e le traverse per il punto in cui si intersecano.
specifiche:
- I dati possono essere inseriti tramite stdin o come argomento di una funzione, ma devono essere in qualche forma di stringa
- I dati devono essere divisi dal delimitatore di stringa
; - I dati saranno composti solo da caratteri ASCII, non saranno quotati e non conterranno il delimitatore.
- La prima riga dei dati verrà utilizzata per le intestazioni di colonna
- I dati avranno sempre lo stesso numero di colonne
- L'input conterrà sempre almeno due righe (un'intestazione, un dato). Non è necessario gestire set vuoti.
- È consentita una nuova riga finale o precedente
- Ogni colonna dovrebbe essere larga quanto l'elemento più largo, riempiendo gli elementi più corti a destra (bonus -5% se si padano i numeri a sinistra)
- Dovrebbe esserci 1 spazio di riempimento prima e dopo le intestazioni e i dati, tranne quando la colonna è più larga
- Non è consentito utilizzare il
mysqlprogramma effettivo per generare la tabella - Si applicano scappatoie standard
Input di esempio:
column 1;column 2;column 3
hello;world;test
longer data;foo;bar
Produzione
+-------------+----------+----------+
| column 1 | column 2 | column 3 |
+-------------+----------+----------+
| hello | world | test |
| longer data | foo | bar |
+-------------+----------+----------+
punteggio:
Il numero più basso di byte vince, ovviamente. -5% di bonus per i numeri di riempimento a sinistra (vedi dettagli).