Visão geral:
Seu trabalho é pegar a entrada CSV no key=value
formato e alinhá-la de uma maneira mais organizada (veja abaixo).
Entrada:
Sempre via stdin . Os registros sempre estarão no seguinte formato key=value
:
foo=bar,baz=quux
abc=123,foo=fubar
baz=qwe,abc=rty,zxc=uiop,foo=asdf
- Não haverá lista de chaves possíveis com antecedência, você deve encontrá-las no texto de entrada.
- O fim da entrada será sinalizado por
EOF
qualquer implementaçãoEOF
apropriada para o seu sistema operacional.
Resultado:
A primeira linha da sua saída será uma lista de todas as chaves, em ordem alfabética (mesmo que as chaves sejam todos números). Depois disso, imprima cada registro no mesmo formato CSV no cabeçalho do número apropriado, sem as teclas listadas. Portanto, para o exemplo acima, a saída correta seria:
abc,baz,foo,zxc
,quux,bar,
123,,fubar,
rty,qwe,asdf,uiop
PERGUNTAS FREQUENTES:
- Preciso me preocupar com entradas formatadas incorretamente?
- Não. O seu programa pode fazer o que quiser (lançar uma exceção, ignorar etc.) se a entrada não estiver formatada corretamente, por exemplo, uma linha de
foo,bar,baz
- Não. O seu programa pode fazer o que quiser (lançar uma exceção, ignorar etc.) se a entrada não estiver formatada corretamente, por exemplo, uma linha de
- Como lidar com caracteres especiais de escape?
- Você pode assumir que não haverá dados adicionais
,
ou=
nos dados que não fazem parte dokey=value
formato."
não tem nenhum significado especial neste concurso (mesmo que tenha no CSV tradicional).também não é especial de forma alguma.
- As linhas devem corresponder à seguinte regex:
^([^=,]+=[^=,]+)(,[^=,]+=[^=,]+)*$
- Portanto, chaves e valores corresponderão
[^=,]+
- Portanto, chaves e valores corresponderão
- Você pode assumir que não haverá dados adicionais
- E quanto a
CRLF
vs.LF
?- Você pode escolher qualquer delimitador apropriado para sua plataforma. A maioria dos idiomas lida com isso sem código delimitante especial.
- Preciso imprimir vírgulas à direita se as últimas colunas não existirem?
- Sim. Veja o exemplo.
- Analisadores CSV ou outras ferramentas externas semelhantes são permitidos?
- Não. Você deve analisar os dados você mesmo.