Thứ tự định dạng của ngày là một trong những vấn đề phức tạp và gây chia rẽ nhất mà thế giới phải đối mặt ngày nay. Một số người trong chúng tôi tranh luận kịch liệt rằng Tháng / Ngày / Năm là phù hợp, xem xét đó là cách chúng tôi nói ngày thành tiếng. Những người khác lớn tiếng tuyên bố rằng Ngày / Tháng / Năm là tốt nhất, bởi vì nó đặt các điều khoản theo thứ tự tăng dần của thời lượng mà họ đại diện.
Đủ là đủ. Máy tính có thể giải quyết tranh chấp này một cách đơn giản và công bằng. Mã của bạn, một chức năng hoặc chương trình hoàn chỉnh, sẽ lấy một chuỗi ngày được phân tách bằng dấu gạch chéo, vd 12/1/2015
. Lưu ý đây là định dạng chính xác, không có số 0 đứng đầu và có một năm có bốn chữ số ở cuối.
- Nếu đó chắc chắn là Tháng / Ngày / Năm, ví dụ:
10/31/1998
xuất ra một văn bản đại diện cho ngày đó theo định dạng chính xác này, với tên đầy đủ của tháng, ngày và năm:October 31, 1998
- Nếu đó chắc chắn là Ngày / Tháng / Năm, ví dụ:
25/12/1989
xuất ra loại đại diện văn bản tương tự :December 25, 1989
. - Nếu nó mơ hồ cho dù đó là Tháng / Ngày / Năm hay Ngày / Tháng / Năm, hãy đưa ra một ngày giải quyết sự mơ hồ bằng cách kết hợp hai ngày có thể như sau:
- Tạo một tên tháng mới bằng cách lấy một nửa đầu tiên của tên của đầu tháng và thêm nửa sau của sau tháng. Đối với các tháng có độ dài lẻ, nửa đầu nhận được thêm chữ cái. Để được rõ ràng, các nửa đầu tiên của tháng là
Janu
,Febr
,Mar
,Apr
,Ma
,Ju
,Ju
,Aug
,Septe
,Octo
,Nove
, vàDece
và do đó nửa thứ hai làary
,uary
,ch
,il
,y
,ne
,ly
,ust
,mber
,ber
,mber
, vàmber
. - Tính ngày bằng cách tính trung bình hai ngày có thể, lấy sàn khi trung bình không phải là số nguyên.
- Xuất ra văn bản đại diện của ngày này, ví dụ
10/8/2011
, cho đầu raAugber 9, 2011
.
- Tạo một tên tháng mới bằng cách lấy một nửa đầu tiên của tên của đầu tháng và thêm nửa sau của sau tháng. Đối với các tháng có độ dài lẻ, nửa đầu nhận được thêm chữ cái. Để được rõ ràng, các nửa đầu tiên của tháng là
Nếu ngày đầu vào không thể là Tháng / Ngày / Năm hoặc Ngày / Tháng / Năm (ví dụ 13/13/2013
hoặc thậm chí 2/30/2002
), mọi hành vi đều được chấp nhận. Mã golf này, mã ngắn nhất sẽ thắng!
Các trường hợp thử nghiệm:
10/31/1998
cho October 31, 1998
25/12/1989
cho December 25, 1989
10/8/2011
cho Augber 9, 2011
8/5/1957
cho Maust 6, 1957
9/12/2012
(đủ kỳ lạ) cho September 10, 2012
1/1/2000
cho January 1, 2000
without leading zeroes and with a four-digit year at the end
ngụ ýyear >= 1000