개요 :
귀하의 임무는 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 파서 또는 기타 유사한 외부 도구가 허용됩니까?
- 아니요. 데이터를 직접 파싱해야합니다.