Saya yakin sebagian besar dari kita telah melihat hasil SQL di terminal, semua diformat rapi menjadi baris dan kolom. Jika belum, berikut ini contohnya:
+----------+-----------+----------------+
| column 1 | column 2 | column 3 |
+----------+-----------+----------------+
| data | more data | even more data |
| etc | just goes | on and on |
+----------+-----------+----------------+
Tujuan Anda untuk tantangan ini adalah, mengingat kolom dan data baris untuk sebuah tabel, gambarlah tabel dengan gaya ini. Harus ada garis horizontal di bagian atas dan bawah tabel, dan satu tepat di bawah baris tajuk. Harus ada garis vertikal antara setiap kolom, dan satu di kedua sisi tabel. Anda harus menggunakan pipa untuk garis vertikal, tanda hubung untuk garis horizontal, dan plusses untuk tempat perpotongannya.
Spesifik:
- Data dapat dimasukkan melalui stdin, atau sebagai argumen untuk suatu fungsi, tetapi harus dalam bentuk string
- Data harus dibagi dengan pembatas string
;
- Data hanya akan terdiri dari karakter ASCII, tidak dikutip, dan tidak akan mengandung pembatas.
- Baris pertama data akan digunakan untuk tajuk kolom
- Data akan selalu memiliki jumlah kolom yang sama
- Input akan selalu mengandung setidaknya dua baris (satu header, satu data). Anda tidak harus menangani set kosong.
- Baris baru yang tertinggal atau sebelumnya diizinkan
- Setiap kolom harus selebar elemen terluas, melapisi elemen lebih pendek di sebelah kanan (bonus -5% jika Anda mengisi angka di sebelah kiri)
- Harus ada 1 ruang bantalan sebelum dan sesudah tajuk dan data, kecuali bila kolomnya lebih lebar
- Anda tidak diizinkan menggunakan
mysql
program aktual untuk menghasilkan tabel - Celah standar berlaku
Input sampel:
column 1;column 2;column 3
hello;world;test
longer data;foo;bar
Keluaran
+-------------+----------+----------+
| column 1 | column 2 | column 3 |
+-------------+----------+----------+
| hello | world | test |
| longer data | foo | bar |
+-------------+----------+----------+
Mencetak:
Jumlah byte terendah menang, tentu saja. -5% bonus untuk nomor padding di sebelah kiri (lihat spesifik).
Jawaban:
CJam,
6758 byteCobalah online di penerjemah CJam .
sumber
JavaScript (ES6), 262 byte
Demo
Karena ES6, demo ini berfungsi di Firefox dan Edge saat ini. Untuk beberapa alasan itu tidak berfungsi di Chrome / Opera bahkan dengan fitur JavaScript eksperimental diaktifkan.
sumber