Trong xkcd của mình về định dạng ngày tiêu chuẩn ISO 8601, Randall chụp theo một ký hiệu thay thế khá tò mò:
Các số lớn là tất cả các chữ số xuất hiện trong ngày hiện tại theo thứ tự thông thường của chúng và các số nhỏ là các chỉ số dựa trên 1 về sự xuất hiện của chữ số đó. Vì vậy, ví dụ trên đại diện 2013-02-27
.
Hãy xác định một đại diện ASCII cho một ngày như vậy. Dòng đầu tiên chứa các chỉ số từ 1 đến 4. Dòng thứ hai chứa các chữ số "lớn". Dòng thứ ba chứa các chỉ số 5 đến 8. Nếu có nhiều chỉ mục trong một vị trí, chúng được liệt kê cạnh nhau từ nhỏ nhất đến lớn nhất. Nếu có nhiều nhất các m
chỉ mục trong một vị trí (nghĩa là trên cùng một chữ số và trong cùng một hàng), thì mỗi cột phải có các m+1
ký tự rộng và được căn trái:
2 3 1 4
0 1 2 3 7
5 67 8
Xem thêm các thách thức đồng hành cho việc chuyển đổi ngược lại.
Các thách thức
Cho một ngày theo ký hiệu xkcd, xuất ngày ISO 8601 tương ứng ( YYYY-MM-DD
).
Bạn có thể viết chương trình hoặc hàm, lấy đầu vào qua STDIN (hoặc thay thế gần nhất), đối số dòng lệnh hoặc đối số hàm và xuất kết quả qua tham số STDOUT (hoặc thay thế gần nhất), tham số trả về hàm hoặc tham số hàm (out).
Bạn có thể cho rằng đầu vào là bất kỳ ngày hợp lệ nào giữa các năm 0000
và 9999
, bao gồm.
Sẽ không có bất kỳ khoảng trắng hàng đầu nào trong đầu vào, nhưng bạn có thể giả sử rằng các dòng được đệm bằng khoảng trắng thành hình chữ nhật, chứa nhiều nhất một cột dấu cách của khoảng trắng.
Luật golf tiêu chuẩn được áp dụng.
Các trường hợp thử nghiệm
2 3 1 4
0 1 2 3 7
5 67 8
2013-02-27
2 3 1 4
0 1 2 4 5
5 67 8
2015-12-24
1234
1 2
5678
2222-11-11
1 3 24
0 1 2 7 8
57 6 8
1878-02-08
2 4 1 3
0 1 2 6
5 678
2061-02-22
1 4 2 3
0 1 2 3 4 5 6 8
6 5 7 8
3564-10-28
1234
1
5678
1111-11-11
1 2 3 4
0 1 2 3
8 5 6 7
0123-12-30
1
là ở trên 2
, vì vậy chữ số đầu tiên là 2
. 2
ở trên 0
, nên chữ số thứ hai là 0
. 3
ở trên 1
, 4
ở trên 3
, vì vậy chúng tôi nhận được 2013
bốn chữ số đầu tiên. Bây giờ 5
là bên dưới 0
, vì vậy chữ số thứ năm là 0
, 6
và 7
cả hai bên dưới 2
, vì vậy cả hai chữ số đó là 2
. Và cuối cùng, 8
là bên dưới 7
, vì vậy chữ số cuối cùng là 8
, và chúng tôi kết thúc với 2013-02-27
. (Các dấu gạch ngang được ẩn trong ký hiệu xkcd vì chúng ta biết chúng xuất hiện ở vị trí nào.)