Соревнование
Учитывая ввод CSV, выведите правильную таблицу Unicode, используя символы поля.
Форматирование
Таблица будет отформатирована с использованием следующих правил:
- Ширина столбца будет равна наибольшему значению этого столбца
- Все данные таблицы будут выровнены
- Каждая таблица будет считать заголовок первой строки CSV
- Таблица будет использовать следующие символы для своих границ:
┌ ┬ ┐ ├ ┼ ┤ └ ┴ ┘ ─ │
пример
Input:
Name,Age,Gender
Shaun,19,Male
Debra,19,Female
Alan,26,Male
George,15,Male
Output:
┌──────┬───┬──────┐
│Name │Age│Gender│
├──────┼───┼──────┤
│Shaun │19 │Male │
│Debra │19 │Female│
│Alan │26 │Male │
│George│15 │Male │
└──────┴───┴──────┘
правила
- Применяются стандартные лазейки
- Вы можете отправить полную программу, функцию или лямбду
- Ввод может быть из файла, аргумента программы или любой приемлемой альтернативы
- Вывод может быть в файл, возвращен или любой приемлемой альтернативой
- Вход CSV должен принимать тот же формат, что и в моем примере.
- Кратчайший ответ в байтах побеждает.
Вход CSV должен иметь следующую форму:
Header1,Header2,Header3 newline
Column1,Column2,Column3 newline
Column1,Column2,Column3 optional_newline
Ответы:
Попробуйте (Dyalog) APL ,
3843 байтаПоследняя строка ввода должна иметь завершающий символ новой строки.
Попробуйте онлайн! В автономной версии Dyalog APL выполните
]boxing ON -style=min
тот же эффект.объяснение
{
...}
анонимная функция, где⍵
представляет аргумент:¯1 ⌽ ⍵
поверните завершающий символ новой строки вперед(s ←
...)
определить функцию s следующим образом и применить ее1 ↓¨
бросьте первый символ каждого⊢ ⊂⍨
линия, разделить где⊃ = ⊢
первый символ равен символам в строке',' ,¨
затем добавьте запятую к каждой строкеs¨
применить функцию s к каждой строке{
...}
теперь примените следующую анонимную функцию:1 ↓ ⍵
отбросить первый элемент (заголовки строк)↓ ⍉ ↑
транспонировать список строк в список столбцов↑¨
сделать каждый элемент (список записей) в матрицу дополненных записей⍉ ⍪
сделать в матрицу из одного столбца, а затем переместить в матрицу из одной строки(⊃⍵) ⍪
поместите первый элемент аргумента (список заголовков) сверху`Примечание. Хотя символы рисования линий явно не используются в моем решении, они являются частью набора символов APL и также будут учитываться как отдельные байты.
источник
Is input using list or array of strings (and no newlines) valid? Nope.
PowerShell 3+, 365 байт
Я чувствую, что это можно улучшить, но у меня не хватило времени. Все окончания строк
\n
без\r
, кодировка UTF8 без спецификации.источник
Ракетка 578 байт
Ungolfed:
Тестирование:
Выход:
источник
JavaScript (ES6 | FireFox), 286 байт
Использует
padEnd
, что специфично для FireFox.источник
g('└┴┘')
эквивалентноg└┴┘
(с обратными чертами послеg
и в конце)?padEnd
это нестандартно. Вы должны указать необходимую среду исполнения.`foo`+bar+`baz`
- вы можете сохранить байт с помощью шаблона`foo${bar}baz`
.JavaScript (ES6), 281 байт
Примечание: вводите как одну строку с символами новой строки - по запросу OP. Другие ответы используют строковый список - используя строковый массив во входных данных, я могу избежать первого разбиения и сокращения 9 байтов.
Меньше гольфа
Тестовое задание
источник
Python 3, 318 байт
-3 байта для использования
%
форматирования и -1 для сокращенияstr.join
Требуется ввод в кавычках.
источник
input()
занимает только одну линию на каждый звонок. Вам нужно будет звонитьinput()
до тех пор, пока не останется больше строк, или читать напрямуюstdin
.C #, 696 байт
Golfed:
Ungolfed (и приятнее, потому что ^ это никому не нужно):
Тестирование:
источник
Is input using list or array of strings (and no newlines) valid? Nope.
Perl, 273 + 9 (
-CS -nlaF,
флаги) = 282 байтаС помощью:
Попробуйте это на Ideone .
источник
PHP, 313 байт
сломать
Проверьте это на Ideone
источник
APL (Dyalog Extended) ,
3625 байт SBCSПолная программа. Предполагается, что
ABCDEFGHIJKLMNOPQRSTUVWXYZ
это файл CSV. Печать на стандартный вывод.Попробуйте онлайн!
⎕A
в верхнем регистре lphabet (кратчайший к ссылке встроенной в строке) читать файл и конвертирование из CSV для матрицы магазина как (для м Atrix) падения первой строки транспонирования раскола в список столбцов смешиваться каждый список строк в матрицу ... сложите следующее: возьмите первый ряд применения к нему (рисует символы рисования линий)⎕CSV
m←
m
1↓
⍉
↓
↑¨
(
)⍪
1↑m
m
⌂disp
dfns.disp
источник