ปีสุริยคติคือ 365 วัน 5 ชั่วโมง 48 นาที 45 วินาทีและ 138 มิลลิวินาทีตามวิดีโอนี้ ด้วยปฏิทินเกรโกเรียนปัจจุบันกฎสำหรับการก้าวกระโดดปีมีดังนี้:
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
น่าเสียดายที่วิธีการนี้ปิดหนึ่งวันทุกๆ 3216 ปี
วิธีหนึ่งที่เป็นไปได้ในการปฏิรูปปฏิทินคือกฎต่อไปนี้:
if year is divisible by 128, COMMON YEAR
else if year is divisible by 4, LEAP YEAR
else, COMMON YEAR
สิ่งนี้มีประโยชน์ที่ไม่ต้องการให้เราเปลี่ยนปฏิทินของเราอีกต่อไปอีก 625,000 ปีให้หรือรับ
สมมติว่าคนทั้งโลกตัดสินใจว่าเริ่มจากตอนนี้เราใช้ระบบนี้ของทุก ๆ ปีที่สี่คือปีอธิกลายกเว้นทุก ๆ ปีที่ 128 เปลี่ยนปฏิทินของเราดังนี้:
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
สิ่งนี้จะส่งผลกระทบต่ออัลกอริทึมวันของเราอย่างไร
ความท้าทาย
- ให้วันที่จากปี 2000 ถึงปี 100,000 ค้นหาวันของสัปดาห์ภายใต้ปฏิทินใหม่นี้
- รูปแบบอินพุตและเอาต์พุตใด ๆ ที่อนุญาตตราบใดที่คุณระบุรูปแบบที่คุณใช้อย่างชัดเจน
- นี่คือรหัสกอล์ฟดังนั้นพยายามแก้ปัญหาของคุณให้แข็งแรงที่สุด!
กรณีทดสอบ
"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
ข้อเสนอแนะและข้อเสนอแนะเกี่ยวกับความท้าทายยินดีต้อนรับ ขอให้โชคดีและกอล์ฟที่ดี!