Огляд:
Ваше завдання - взяти вхід CSV у key=value
форматі та вирівняти його більш організованим (див. Нижче) способом.
Вхід:
Завжди через stdin . Записи завжди будуть у такій формі key=value
:
foo=bar,baz=quux
abc=123,foo=fubar
baz=qwe,abc=rty,zxc=uiop,foo=asdf
- Перелік можливих ключів заздалегідь не буде, їх потрібно знайти у вхідному тексті.
- Кінець входу буде сигналізований
EOF
, незалежно від того , яка реалізаціяEOF
підходить для вашої ОС.
Вихід:
Перший рядок вашого результату буде переліком усіх клавіш, в алфавітному порядку (навіть якщо на клавішах є всі цифри). Після цього надрукуйте кожен запис у тому самому форматі CSV у відповідному заголовку цифр без вказаних ключів. Отже, для прикладу вище, правильним результатом буде:
abc,baz,foo,zxc
,quux,bar,
123,,fubar,
rty,qwe,asdf,uiop
FAQ:
- Чи потрібно турбуватися про неправильно відформатований вхід?
- Ні. Ваша програма може робити все, що завгодно (кидати виняток, ігнорувати тощо), якщо вхід неправильно відформатований, наприклад, рядок
foo,bar,baz
- Ні. Ваша програма може робити все, що завгодно (кидати виняток, ігнорувати тощо), якщо вхід неправильно відформатований, наприклад, рядок
- Як мені впоратися із спеціальними символами втечі?
- Ви можете припустити, що додаткових даних
,
або=
даних, які не є частиноюkey=value
формату, не буде."
не має особливого значення в цьому конкурсі (навіть якщо це робиться в традиційному CSV).також не є особливим у жодному разі.
- Рядки повинні відповідати наступному регулярному вираженню:
^([^=,]+=[^=,]+)(,[^=,]+=[^=,]+)*$
- Тому обидва ключі та значення будуть відповідати
[^=,]+
- Тому обидва ключі та значення будуть відповідати
- Ви можете припустити, що додаткових даних
- Як щодо
CRLF
VS.LF
?- Ви можете вибрати будь-який роздільник, який підходить для вашої платформи. Більшість мов справляються з цим без спеціального розмежувального коду.
- Чи потрібно мені друкувати проміжні коми, якщо останні кілька стовпців не існують?
- Так. Дивіться приклад.
- Чи дозволені аналізатори CSV чи інші подібні зовнішні інструменти?
- Ні. Ви повинні самі проаналізувати дані.