Jestem pewien, że większość z nas widziała wyniki SQL w terminalu, wszystkie starannie sformatowane w wiersze i kolumny. Jeśli nie, oto przykład:
+----------+-----------+----------------+
| column 1 | column 2 | column 3 |
+----------+-----------+----------------+
| data | more data | even more data |
| etc | just goes | on and on |
+----------+-----------+----------------+
Twoim celem tego wyzwania jest, biorąc pod uwagę kolumny i dane wierszy dla tabeli, narysować tabelę w tym stylu. Na górze i na dole tabeli powinna znajdować się pozioma linia oraz jedna tuż pod wierszem nagłówka. Pomiędzy każdą kolumną powinny znajdować się pionowe linie i jedna po obu stronach stołu. Należy używać rur dla linii pionowych, łączników dla linii poziomych i znaków plus dla miejsca ich przecięcia.
Specyfika:
- Dane mogą być wprowadzane przez stdin lub jako argument funkcji, ale muszą być w postaci łańcucha
- Dane powinny być podzielone przez ogranicznik łańcucha
;
- Dane będą się składać tylko ze znaków ASCII, nie będą cytowane i nie będą zawierać ogranicznika.
- Pierwszy wiersz danych zostanie wykorzystany do nagłówków kolumn
- Dane zawsze będą miały tę samą liczbę kolumn
- Dane wejściowe zawsze będą zawierać co najmniej dwa wiersze (jeden nagłówek, jeden dane). Nie musisz obsługiwać pustych zestawów.
- Końcowy lub poprzedni znak nowej linii jest dozwolony
- Każda kolumna powinna być tak szeroka jak najszerszy element, dopełniając krótsze elementy po prawej stronie (premia -5%, jeśli wprowadzisz liczby po lewej)
- Przed i za nagłówkami i danymi powinna znajdować się 1 przestrzeń dopełnienia, z wyjątkiem sytuacji, gdy kolumna jest szersza
- Nie wolno używać rzeczywistego
mysql
programu do generowania tabeli - Obowiązują standardowe luki
Przykładowe dane wejściowe:
column 1;column 2;column 3
hello;world;test
longer data;foo;bar
Wynik
+-------------+----------+----------+
| column 1 | column 2 | column 3 |
+-------------+----------+----------+
| hello | world | test |
| longer data | foo | bar |
+-------------+----------+----------+
Punktacja:
Oczywiście wygrywa najmniejsza liczba bajtów. -5% bonusu za numery dopełniające po lewej stronie (patrz szczegóły).
Odpowiedzi:
CJam,
6758 bajtówWypróbuj online w interpretatorze CJam .
źródło
JavaScript (ES6), 262 bajty
Próbny
Ponieważ jest to ES6, to demo działa obecnie w Firefox i Edge. Z jakiegoś powodu nie działa w przeglądarce Chrome / Opera, nawet jeśli włączono eksperymentalne funkcje JavaScript.
źródło