ในเว็บไซต์ของฉันผู้ใช้ป้อนวันเดือนปีเกิดในรูปแบบxx.xx.xx- ตัวเลขสองหลักสามตัวคั่นด้วยจุด น่าเสียดายที่ฉันลืมบอกผู้ใช้ว่าต้องใช้รูปแบบใด ทั้งหมดที่ฉันรู้คือส่วนหนึ่งใช้สำหรับเดือนหนึ่งสำหรับวันที่และอีกหนึ่งสำหรับปี ปีแน่นอนในศตวรรษที่ 20 (1900-1999) ดังนั้นรูปแบบวิธีการ31.05.75 31 May 1975นอกจากนี้ฉันสมมติว่าทุกคนใช้ปฏิทินเกรโกเรียนหรือจูเลียน
ตอนนี้ฉันต้องการผ่านฐานข้อมูลของฉันเพื่อล้างความยุ่งเหยิง ฉันต้องการเริ่มต้นด้วยการจัดการกับผู้ใช้ที่มีวันที่คลุมเครือมากที่สุดนั่นคือผู้ที่ช่วงวันที่เป็นไปได้ที่ใหญ่ที่สุด
ตัวอย่างเช่นวันที่08.27.53หมายถึง27 August 1953ในปฏิทิน Gregorian หรือ Julian วันที่ในปฏิทินจูเลียนเป็น 13 13 daysวันในภายหลังดังนั้นช่วงเป็นเพียง
ในทางตรงกันข้ามสัญกรณ์01.05.12สามารถอ้างถึงวันที่เป็นไปได้มากมาย เร็วที่สุดเท่าที่เป็นและล่าสุดคือ12 May 1901 (Gregorian) ช่วงคือ1 May 1912 (Julian)4020 days
กฎระเบียบ
- อินพุตเป็นสตริงในรูปแบบ
xx.xx.xxโดยที่แต่ละฟิลด์เป็นตัวเลขสองหลักและไม่มีการเติมเบาะ - เอาต์พุตคือจำนวนวันในช่วง
- คุณสามารถสันนิษฐานได้ว่าอินพุตจะเป็นวันที่ที่ถูกต้องเสมอ
- คุณไม่สามารถใช้ฟังก์ชันวันที่หรือปฏิทินในตัว
- รหัสที่สั้นที่สุด (เป็นไบต์) ชนะ
Testcases
01.00.31=>1229.00.02=>0(ความเป็นไปได้เพียงอย่างเดียวคือ29 February 1900 (Julian))04.30.00=>1306.12.15=>3291
5, May 1975ควรจะเป็น31st? นอกจากนี้เราต้องพิจารณาเป็นปีอธิกสุรทินด้วยหรือไม่