Năm mặt trời là 365 ngày, 5 giờ, 48 phút, 45 giây và 138 mili giây, theo video này . Với lịch Gregorian hiện tại, các quy tắc cho năm nhuận như sau:
if year is divisible by 400, LEAP YEAR
else if year is divisible by 100, COMMON YEAR
else if year is divisible by 4, LEAP YEAR
else, COMMON YEAR
Thật không may, phương pháp này bị tắt một ngày cứ sau 3216 năm.
Một phương pháp có thể cải cách lịch là quy tắc sau:
if year is divisible by 128, COMMON YEAR
else if year is divisible by 4, LEAP YEAR
else, COMMON YEAR
Điều này có lợi ích là không yêu cầu chúng ta thay đổi lịch một lần nữa trong 625.000 năm nữa, cho hoặc nhận.
Giả sử toàn bộ thế giới quyết định rằng, bắt đầu từ bây giờ, chúng tôi sử dụng hệ thống này của mỗi năm thứ tư là một năm nhuận trừ mỗi năm thứ 128, thay đổi lịch của chúng tôi như sau:
YEAR GREGORIAN 128-YEAR
2044 LEAP LEAP
2048 LEAP COMMON
2052 LEAP LEAP
...
2096 LEAP LEAP
2100 COMMON LEAP
2104 LEAP LEAP
...
2296 LEAP LEAP
2300 COMMON LEAP
2304 LEAP COMMON
2308 LEAP LEAP
Làm thế nào điều này sẽ ảnh hưởng đến thuật toán ngày trong tuần của chúng tôi?
Các thách thức
- Cho một ngày từ năm 2000 đến năm 100000, tìm ngày trong tuần theo lịch mới này.
- Bất kỳ định dạng đầu vào và đầu ra đều được cho phép miễn là bạn xác định rõ định dạng bạn đang sử dụng.
- Đây là mã golf, vì vậy hãy cố gắng làm cho các giải pháp của bạn càng tốt càng tốt!
Các trường hợp thử nghiệm
"28 February 2048" -> "Friday"
"March 1, 2048" -> "Sat"
(2100, 2, 29) -> 0 # 0-indexed with Sunday as 0
"2100-02-29" -> 7 # 1-indexed with Sunday as 7
"28 Feb. 2176" -> "Wednesday"
"1-Mar-2176" -> "Th"
"28/02/100000" -> "F" # DD/MM/YYYYYY
"Feb. 29, 100000" -> 6 # 1-indexed with Sunday as 7
"03/01/100000" -> 1 # MM/DD/YYYYYY and 1-indexed with Sunday as 1
Đề xuất và phản hồi về các thách thức được chào đón. Chúc may mắn và chơi golf tốt!