Я уверен, что большинство из нас видели результаты SQL в терминале, все аккуратно отформатированы в строки и столбцы. Если нет, вот пример:
+----------+-----------+----------------+
| column 1 | column 2 | column 3 |
+----------+-----------+----------------+
| data | more data | even more data |
| etc | just goes | on and on |
+----------+-----------+----------------+
Ваша цель для этой задачи состоит в том, чтобы, учитывая столбцы и данные строк для таблицы, нарисовать таблицу в этом стиле. В верхней и нижней части таблицы должна быть горизонтальная линия, а справа - строка заголовка. Между каждым столбцом должны быть вертикальные линии, по одной с обеих сторон таблицы. Вы должны использовать трубы для вертикальных линий, дефисы для горизонтальных линий и плюсы для того, где они пересекаются.
Особенности:
- Данные могут быть введены через стандартный ввод или в качестве аргумента функции, но они должны быть в некоторой форме строки
- Данные должны быть разделены строковым разделителем
;
- Данные будут состоять только из символов ASCII, не будут заключены в кавычки и не будут содержать разделитель.
- Первая строка данных будет использоваться для заголовков столбцов
- Данные всегда будут иметь одинаковое количество столбцов
- Входные данные всегда будут содержать как минимум две строки (один заголовок, один данные). Вам не нужно обрабатывать пустые наборы.
- Трейлинг или предыдущий перевод строки разрешен
- Каждый столбец должен быть такой же ширины, как и самый широкий элемент, дополняя более короткие элементы справа (бонус -5%, если вы дополняете цифры слева)
- Должен быть один пробел до и после заголовков и данных, кроме случаев, когда столбец шире
- Вы не можете использовать реальную
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% за добавление чисел слева (см. Подробности).
Ответы:
CJam,
6758 байтПопробуйте онлайн в интерпретаторе CJam .
источник
JavaScript (ES6), 262 байта
демонстрация
Поскольку это ES6, эта демонстрация работает в Firefox и Edge в настоящее время. По некоторым причинам он не работает в Chrome / Opera даже с включенными экспериментальными функциями JavaScript.
источник