Обзор:
Ваша задача состоит в том, чтобы взять CSV-вход в key=value
формате и выстроить его в более организованном порядке (см. Ниже).
Входные данные:
Всегда через стандартный ввод . Записи всегда будут в следующей форме 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
ВОПРОСЫ-ОТВЕТЫ:
- Должен ли я беспокоиться о неправильно отформатированном вводе?
- Нет. Ваша программа может делать все, что захочет (генерировать исключение, игнорировать и т. Д.), Если входные данные отформатированы неправильно, например, строка
foo,bar,baz
- Нет. Ваша программа может делать все, что захочет (генерировать исключение, игнорировать и т. Д.), Если входные данные отформатированы неправильно, например, строка
- Как мне обработать экранирование специальных символов?
- Вы можете предположить, что не будет никаких дополнительных данных
,
или=
данных, которые не являются частьюkey=value
формата."
не имеет никакого особого значения в этом конкурсе (даже при том, что это имеет в традиционном CSV).также не является особенным в любом случае.
- Строки должны соответствовать следующему регулярному выражению:
^([^=,]+=[^=,]+)(,[^=,]+=[^=,]+)*$
- Следовательно, ключи и значения будут совпадать
[^=,]+
- Следовательно, ключи и значения будут совпадать
- Вы можете предположить, что не будет никаких дополнительных данных
- Как насчет
CRLF
противLF
?- Вы можете выбрать любой разделитель, подходящий для вашей платформы. Большинство языков обрабатывают это без специального кода разграничения.
- Нужно ли выводить запятые, если последние несколько столбцов не существуют?
- Да. Смотрите пример.
- Разрешены ли анализаторы CSV или другие подобные внешние инструменты?
- Нет. Вы должны проанализировать данные самостоятельно.