概要:
あなたの仕事は、CSV入力をkey=value
形式で取り、より整理された(以下を参照)方法で並べることです。
入力:
常にstdin経由。レコードは常に次の形式になりますkey=value
。
foo=bar,baz=quux
abc=123,foo=fubar
baz=qwe,abc=rty,zxc=uiop,foo=asdf
- 事前に可能なキーのリストはありません。入力テキストでそれらを見つける必要があります。
- 入力の終わりは、OSに適切な
EOF
実装が何であれ、によって通知さEOF
れます。
出力:
出力の最初の行には、すべてのキーのリストがアルファベット順に表示されます(キーがすべて数字の場合でも)。その後、キーをリストせずに、各レコードを同じCSV形式で適切な番号見出しで印刷します。したがって、上記の例の場合、正しい出力は次のようになります。
abc,baz,foo,zxc
,quux,bar,
123,,fubar,
rty,qwe,asdf,uiop
よくある質問:
- 不適切な形式の入力について心配する必要がありますか?
- いいえ。プログラムは、入力が正しくフォーマットされていない場合(たとえば、
foo,bar,baz
- いいえ。プログラムは、入力が正しくフォーマットされていない場合(たとえば、
- 特殊文字のエスケープを処理するにはどうすればよいですか?
- あなたは、フォーマットの一部ではない追加のデータ
,
や=
データにはないと仮定するかもしれませんkey=value
。"
このコンテストでは特別な意味はありません(従来のCSVではありますが)。また、特別なものでもありません。
- 行は次の正規表現と一致する必要があります。
^([^=,]+=[^=,]+)(,[^=,]+=[^=,]+)*$
- したがって、キーと値の両方が一致します
[^=,]+
- したがって、キーと値の両方が一致します
- あなたは、フォーマットの一部ではない追加のデータ
- 何についての
CRLF
対LF
?- プラットフォームに適した区切り文字を選択できます。ほとんどの言語は、特別な区切りコードなしでこれを処理します。
- 最後のいくつかの列が存在しない場合、末尾のコンマを印刷する必要がありますか?
- はい。例を参照してください。
- CSVパーサーまたは他の同様の外部ツールは許可されていますか?
- いいえ。自分でデータを解析する必要があります。