Tổng quat:
Công việc của bạn là lấy đầu vào CSV theo key=value
định dạng và sắp xếp nó theo cách có tổ chức hơn (xem bên dưới).
Đầu vào:
Luôn luôn thông qua stdin . Hồ sơ sẽ luôn ở dạng sau key=value
:
foo=bar,baz=quux
abc=123,foo=fubar
baz=qwe,abc=rty,zxc=uiop,foo=asdf
- Sẽ không có danh sách các khóa có thể trước, bạn phải tìm thấy chúng trong văn bản đầu vào.
- Kết thúc đầu vào sẽ được báo hiệu bởi
EOF
, bất kỳ triển khai nàoEOF
phù hợp với HĐH của bạn.
Đầu ra:
Hàng đầu tiên của đầu ra của bạn sẽ là một danh sách tất cả các khóa, theo thứ tự bảng chữ cái (ngay cả khi các khóa là tất cả các số). Sau đó, in từng bản ghi ở cùng định dạng CSV tiêu đề số thích hợp, không có các phím được liệt kê. Vì vậy, với ví dụ trên, đầu ra chính xác sẽ là:
abc,baz,foo,zxc
,quux,bar,
123,,fubar,
rty,qwe,asdf,uiop
Câu hỏi thường gặp:
- Tôi có phải lo lắng về đầu vào được định dạng không đúng?
- Không. Chương trình của bạn có thể làm bất cứ điều gì nó muốn (ném ngoại lệ, bỏ qua, v.v.) nếu đầu vào không được định dạng chính xác, ví dụ: một dòng
foo,bar,baz
- Không. Chương trình của bạn có thể làm bất cứ điều gì nó muốn (ném ngoại lệ, bỏ qua, v.v.) nếu đầu vào không được định dạng chính xác, ví dụ: một dòng
- Làm thế nào để tôi xử lý thoát khỏi các nhân vật đặc biệt?
- Bạn có thể cho rằng sẽ không có thêm
,
hoặc=
trong dữ liệu không phải là một phần củakey=value
định dạng."
không có bất kỳ ý nghĩa đặc biệt nào trong cuộc thi này (mặc dù nó có trong CSV truyền thống).cũng không phải là đặc biệt trong bất kỳ cách nào.
- Các dòng phải phù hợp với biểu thức chính sau:
^([^=,]+=[^=,]+)(,[^=,]+=[^=,]+)*$
- Do đó, cả khóa và giá trị sẽ khớp
[^=,]+
- Do đó, cả khóa và giá trị sẽ khớp
- Bạn có thể cho rằng sẽ không có thêm
- Thế còn
CRLF
so vớiLF
?- Bạn có thể chọn bất kỳ dấu phân cách nào phù hợp với nền tảng của bạn. Hầu hết các ngôn ngữ xử lý điều này mà không có mã phân định đặc biệt.
- Tôi có cần in dấu phẩy nếu vài cột cuối không tồn tại không?
- Đúng. Xem ví dụ.
- Các trình phân tích cú pháp CSV hoặc các công cụ bên ngoài tương tự khác có được phép không?
- Không. Bạn phải tự phân tích dữ liệu.