Я впевнений, що більшість із нас бачили результати SQL в терміналі, всі чітко відформатовані у рядки та стовпці. Якщо ви цього не зробили, ось приклад:
+----------+-----------+----------------+
| column 1 | column 2 | column 3 |
+----------+-----------+----------------+
| data | more data | even more data |
| etc | just goes | on and on |
+----------+-----------+----------------+
Ваша мета цього завдання полягає в тому, щоб, враховуючи стовпці та дані рядків для таблиці, намалювати таблицю в цьому стилі. Угорі та внизу таблиці має бути горизонтальна лінія та праворуч під рядком заголовка. Між кожним стовпцем і по обидва боки таблиці повинні бути вертикальні лінії. Ви повинні використовувати труби для вертикальних ліній, дефіси для горизонтальних ліній та плюси там, де вони перетинаються.
Особливості:
- Дані можуть бути введені через stdin або як аргумент функції, але вони повинні бути в якійсь формі рядка
- Дані слід розділити на роздільник рядків
; - Дані будуть складатися лише з символів ASCII, не цитуються і не містять роздільник.
- Перший рядок даних буде використовуватися для заголовків стовпців
- Дані завжди матимуть однакову кількість стовпців
- Вхід завжди буде містити щонайменше два рядки (один заголовок, один дані). Вам не доведеться обробляти порожні набори.
- Допускається попередній або попередній новий рядок
- Кожен стовпець повинен бути таким же широким, як і найширший елемент, підпилюючи коротші елементи праворуч (бонус -5%, якщо ви кладете цифри зліва)
- Перед заголовками та даними та після них має бути 1 пробіл, за винятком випадків, коли стовпчик ширший
- Вам не дозволяється використовувати фактичну
mysqlпрограму для генерації таблиці - Застосовуються стандартні лазівки
Зразок введення:
column 1;column 2;column 3
hello;world;test
longer data;foo;bar
Вихідні дані
+-------------+----------+----------+
| column 1 | column 2 | column 3 |
+-------------+----------+----------+
| hello | world | test |
| longer data | foo | bar |
+-------------+----------+----------+
Оцінка:
Звичайно, найменша кількість байтів виграє. -5% бонус за додаткові номери зліва (див. Специфіку).