PDA

View Full Version : การคำนวณปฏิทิน150ปี


kaiprasit
11 มกราคม 2005, 11:59
อยากไดวิธีการคำนวณครับ ท่านใดพอมีความรู้บ้าง ช่วยส่งเสริมหน่อย :D

TOP
11 มกราคม 2005, 16:13
ก่อนอื่นต้องแยกให้ออกก่อนครับ ว่าปีใดมี 365 วัน ปีใดมี 366 วัน

ปีที่มี 366 วัน (อธิกสุรทิน หรือ Leap Year) หากตรวจสอบจากปี คศ. คือปีที่

หารด้วย 4 ลงตัว
แต่หารด้วย 100 ไม่ลงตัว เว้นเสียแต่ว่า หารด้วย 400 ลงตัว

แต่เวลานำไปเขียนเป็นโปรแกรม หรือเล่นทายวันจากวันที่ในใจ ในช่วงปี คศ. บางช่วง ไม่จำเป็นต้องใช้เงื่อนไขครบถ้วน (มันกินแรง CPU เกินไป) เท่าที่พี่เคยตรวจสอบมาเป็นดังนี้

ถูกต้องในช่วงปี คศ. 2001 - 2339 เงื่อนไขคือ
หารด้วย 4 ลงตัว
แต่หารด้วย 100 ไม่ลงตัว
ถูกต้องในช่วงปี คศ. 1901 - 2099 เงื่อนไขคือ
หารด้วย 4 ลงตัว
อีกเรื่องหนึ่งที่จำเป็นต้องรู้คือ วันแรกของปี คศ. ตรงกับวันใด หาสูตรจากทฤษฏีจำนวนมาดู ก็จะพบว่า ให้หาค่าของ
\left(Year + \left\lfloor \frac{Year - 1}{4} \right\rfloor - \left\lfloor \frac{Year - 1}{100} \right\rfloor + \left\lfloor \frac{Year-1}{400} \right\rfloor \right) \bmod 7 โดยหากได้ค่าเป็น
0 = อาทิตย์ , 1 = จันทร์ , 2 = อังคาร , 3 = พุธ , 4 = พฤหัสบดี , 5 = ศุกร์ , 6 = เสาร์

และเช่นเดียวกัน เวลานำไปเขียนเป็นโปรแกรม หรือเล่นทายวันจากวันที่ในใจ ในช่วงปี คศ. บางช่วง ไม่จำเป็นต้องใช้สูตรครบถ้วน (มันกินแรง CPU เกินไป) เท่าที่พี่เคยตรวจสอบมาเป็นดังนี้

ถูกต้องในช่วงปี คศ. 2001 - 2400 สูตรคือ
\left(Year + \left\lfloor \frac{Year - 1}{4} \right\rfloor - \left\lfloor \frac{Year - 1}{100} \right\rfloor + 5 \right) \bmod 7 ถูกต้องในช่วงปี คศ. 1901 - 2100 สูตรคือ
\left(Year + \left\lfloor \frac{Year - 1}{4} \right\rfloor + 6 \right) \bmod 7
หลักๆก็มีแค่นี้ครับ ที่เหลือคำนวณเองได้ไม่ยากแล้ว ส่วนปฏิทินจันทรคติไม่เคยศึกษาครับ (โปรดอย่าถาม :p )

gon
11 มกราคม 2005, 19:46
รู้สูตรนี้เราก็ไม่ต้องแปลกใจนักว่า จะพัฒนาไปเล่นคิดในใจให้เพื่อนแปลกใจได้อย่างไง. (หัวข้อของ 100 ปี พี่ลบทิ้งนะครับ. ถือว่าซ้ำกับอันนี้ล่ะกัน)

sck
13 มกราคม 2005, 11:12
ยอดเยี่ยมครับ
อยากรู้นานแล้ว :D