Trên trang web của tôi, người dùng nhập ngày sinh của họ theo kiểu xx.xx.xx
- ba số có hai chữ số được phân tách bằng dấu chấm. Thật không may, tôi quên nói với người dùng chính xác định dạng sử dụng. Tất cả những gì tôi biết là một phần được sử dụng cho tháng, một phần cho ngày và một phần cho năm. Năm chắc chắn là vào thế kỷ 20 (1900-1999), vì vậy định dạng 31.05.75
có nghĩa 31 May 1975
. Ngoài ra, tôi cho rằng tất cả mọi người sử dụng lịch Gregorian hoặc Julian.
Bây giờ, tôi muốn đi qua cơ sở dữ liệu của mình để dọn dẹp mớ hỗn độn. Tôi muốn bắt đầu bằng cách giao dịch với người dùng với những ngày mơ hồ nhất, đó là những ngày mà phạm vi ngày có thể là lớn nhất.
Ví dụ: ngày 08.27.53
có nghĩa là 27 August 1953
trong lịch Gregorian hoặc Julian. Ngày trong lịch Julian là 13 ngày sau đó, vì vậy phạm vi chỉ là 13 days
.
Ngược lại, ký hiệu 01.05.12
có thể đề cập đến nhiều ngày có thể. Sớm nhất là 12 May 1901 (Gregorian)
, và mới nhất là 1 May 1912 (Julian)
. Phạm vi là 4020 days
.
Quy tắc
- Đầu vào là một chuỗi trong định dạng
xx.xx.xx
, trong đó mỗi trường có hai chữ số và không có đệm. - Đầu ra là số ngày trong phạm vi.
- Bạn có thể cho rằng đầu vào sẽ luôn là một ngày hợp lệ.
- Bạn không được sử dụng bất kỳ chức năng ngày hoặc lịch tích hợp nào.
- Mã ngắn nhất (tính bằng byte) thắng.
Tủ thử
01.00.31
=>12
29.00.02
=>0
(Khả năng duy nhất là29 February 1900 (Julian)
)04.30.00
=>13
06.12.15
=>3291
5, May 1975
được cho là31st
? Ngoài ra, chúng ta có phải tính đến năm nhuận không?