Огляд:
Ваше завдання - взяти вхід 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).також не є особливим у жодному разі. - Рядки повинні відповідати наступному регулярному вираженню:
^([^=,]+=[^=,]+)(,[^=,]+=[^=,]+)*$- Тому обидва ключі та значення будуть відповідати
[^=,]+
- Тому обидва ключі та значення будуть відповідати
- Ви можете припустити, що додаткових даних
- Як щодо
CRLFVS.LF?- Ви можете вибрати будь-який роздільник, який підходить для вашої платформи. Більшість мов справляються з цим без спеціального розмежувального коду.
- Чи потрібно мені друкувати проміжні коми, якщо останні кілька стовпців не існують?
- Так. Дивіться приклад.
- Чи дозволені аналізатори CSV чи інші подібні зовнішні інструменти?
- Ні. Ви повинні самі проаналізувати дані.