แต่ละปีมีปฏิทินที่ไม่ได้ใช้ถูกทิ้งมากมาย เป็นการสูญเสียพอสมควรโดยเฉพาะยุคที่กระดาษเริ่มเป็นสิ่งที่มีค่ามากขึ้นเรื่อยๆ จะดีแค่ไหนหากมีปฏิทินวิเศษที่สามารถนำไปใช้ในปีอื่นๆ ได้
ผู้ผลิตปฏิทินบางเจ้าก็ใช้วิธีที่ง่ายมาก ด้วยการทำช่องว่างๆ 7 หลัก (คอลัมน์) ให้เราใส่วันที่เอง แต่ก็ต้องออกแรงนิดหน่อยและอาจเผลอเขียนผิดได้ โดยเฉพาะปัญหาเรื่องวันที่ 29 กุมภาพันธ์ เมื่อพิจารณาวันพิเศษนี้แล้วเราก็จะพบว่าปฏิทินมีเพียง 14 แบบ คือขึ้นกับ 2 ประเด็น ว่าวันที่ 1 มกราคมจะเป็นวันใดในสัปดาห์ และว่าปีนั้นมี 365 หรือ 366 วัน
เราจะมาคำนวณดูว่าปฏิทินเก่าแต่ละปีจะสามารถนำไปใช้ได้ในปีใดบ้าง ซึ่งผมเองก็มีประสบการณ์ในการใช้ปฏิทินเก่าด้วยวิธีนี้ตั้งแต่สมัยเรียนมัธยม
ก่อนอื่นก็ต้องเล่าประวัติการมี 29 วันของเดือนกุมภาพันธ์ เหตุที่ต้องมีวันพิเศษนี้ที่ทำให้คนบางคนได้ฉลองวันเกิดเพียง 4 ปีครั้ง ชนิดที่ว่าพอถึงแล้วต้องฉลองข้ามวันข้ามคืนให้หายคิดถึง ที่เราต้องมีวันนี้เพิ่มเพราะโลกโคจรรอบดวงอาทิตย์ใช้เวลาเกิน 365 วัน เกินไปประมาณ 1 ใน 4 วัน ก็เลยต้องชดเชยทุกๆ 4 ปี เช่นเดียวกันในระบบจันทรคติก็มีการชดเชย เช่นที่เราเคยได้ยินว่ามีเดือน 8 สองหน ทั้งหมดนี้ก็เพื่อต้องการให้วันที่กับฤดูกาลไม่คลาดเคลื่อนกัน
เรื่องยุ่งยากมันอยู่ที่ว่าที่ประมาณว่า 1 ใน 4 นี่มันมากไป ก็เลยเป็นที่มาของการชดเชยที่ซับซ้อนพอสมควร กล่าวคือทุกๆ 100 ปีก็จะไม่มี 29 กุมภาพันธ์ ซึ่งก็ทำให้เรารู้สึกขัดแย้งทันทีเพราะปี 2000 มีวันเพิ่ม เลยต้องกล่าวถึงข้อยกเว้นของข้อยกเว้น นั่นคือทุกๆ 400 ปีจะมีวันเพิ่ม นี่ก็เป็นเหตุให้ปี 2000 เป็นเช่นนั้น
สำหรับผู้อ่านที่ยังเด็กก็รอดูปรากฏการณ์นี้ในปี 2100 ที่จะไม่มีวันเพิ่มนี้ นี่ก็ชี้ให้เห็นความเก่งกาจของนักดาราศาสตร์ที่สามารถคำนวณได้ละเอียดยิบจนสามารถหาสูตรในการชดเชยที่เป็นระบบและจำง่าย แถมยังเก็บรายละเอียดให้ชดเชยได้โดยไม่คลาดเคลื่อน ซึ่งจริงๆ ในอนาคตอาจมีคนค้นพบว่าในทุกๆ 4000 ปีต้องทำอะไรสักอย่างให้มันเป๊ะกว่านี้
เราจะลองมาดูโปรแกรมการแจกแจงว่าปีไหนใช้ปฏิทินเหมือนกันโดยดูขั้นตอนวิธีง่ายๆ ที่จะกล่าวต่อไป ก่อนอื่นต้องปรับความคิดเรื่องวันในสัปดาห์ให้เหมาะกับการคิดคำนวณก่อน เราจะใช้ระบบการดูเศษเหลือจากการหารด้วย 7 โดยกำหนดเครื่องหมายด้วย a%b ให้แปลว่าเศษเหลือจากการหาร a ด้วย b เรามาดูตัวอย่างต่อไปนี้ หากเราพบว่าในเดือนหนึ่งมีวันที่ 5 เป็นวันอังคาร เราก็สามารถคำนวณได้ว่าวันอื่นๆ ในเดือนนี้เป็นวันอะไร รหัสที่เรานิยมใช้คือ 0 เป็นวันอาทิตย์ 1 เป็นวันจันทร์ 2 เป็นวันอังคาร ไล่ไปจนถึง 6 เป็นวันเสาร์ เราก็รู้ว่าเศษเหลือจากการหาร วันที่-3 ด้วย 7 จะเป็นรหัสบอกว่าเป็นวันใดของสัปดาห์ เช่น วันที่ 24 ก็ได้รหัส (24-3)%7 เท่ากับ 0 จึงเป็นอาทิตย์
สำหรับปี ค.ศ. ที่จะมี 366 วันก็ดูจากต้องหารด้วย 4 ลงตัว แต่ก็ต้องไม่ลืมเรื่องการชดเชยสองชั้นที่กล่าวไว้แล้ว ข้อมูลสำคัญอีกประการคือต้องรู้สักปีที่เราจะเริ่มต้นนับว่ามันขึ้นต้นวันปีใหม่ด้วยวันใด ในที่นี้ขอใช้ปี 1980 ซึ่งเป็นปีที่เราเห็นบ่อยที่คอมพิวเตอร์รุ่นเก่าๆ นับเป็นปีเริ่มต้น และเริ่มปีวันในวันอังคาร ดังนั้นปี 1980 ก็จะมีรหัสเป็น 2
ขั้นตอนวิธีของเราก็จะเป็นดังนี้ ซึ่งเริ่มจากให้ตะกร้าปีทั้ง 7 อัน (ประจำวันในสัปดาห์) ว่างเปล่า และให้ s เป็นรหัสสะสมมีค่าเริ่มต้นเป็น 2
ทำสำหรับปี y เป็น 1980 ถึง 2100
• ดูว่าปี y มีกี่วันจาก ถ้า y%4 เป็น 0 และ y%100 ไม่เป็น 0 หรือ y%400 เป็น 0 ได้ 366 ไม่งั้น 365 (ตรงนี้จะทำ “และ” หรือ “หรือ” ก่อนก็ได้)
• โยน y ใส่ตะกร้าวันตามรหัส s%7 และตามจำนวนวันในปี (เช่น ปี 1980 ก็จะลงตะกร้า 2 คือวันอังคาร แบบ 366 วัน)
• เพิ่มค่า s ตามจำนวนวันในปี
เท่านี้ก็เสร็จกระบวนการ และได้ผลดังต่อไปนี้
สำหรับ 365 วัน
0 1989, 1995, 2006, 2017, 2023, 2034, 2045, 2051, 2062, 2073, 2079, 2090
1 1990, 2001, 2007, 2018, 2029, 2035, 2046, 2057, 2063, 2074, 2085, 2091
2 1985, 1991, 2002, 2013, 2019, 2030, 2041, 2047, 2058, 2069, 2075, 2086, 2097
3 1986, 1997, 2003, 2014, 2025, 2031, 2042, 2053, 2059, 2070, 2081, 2087, 2098
4 1981, 1987, 1998, 2009, 2015, 2026, 2037, 2043, 2054, 2065, 2071, 2082, 2093, 2099
5 1982, 1993, 1999, 2010, 2021, 2027, 2038, 2049, 2055, 2066, 2077, 2083, 2094, 2100
6 1983, 1994, 2005, 2011, 2022, 2033, 2039, 2050, 2061, 2067, 2078, 2089, 2095
สำหรับ 366 วัน
0 1984, 2012, 2040, 2068, 2096
1 1996, 2024, 2052, 2080
2 1980, 2008, 2036, 2064, 2092
3 1992, 2020, 2048, 2076
4 2004, 2032, 2060, 2088
5 1988, 2016, 2044, 2072
6 2000, 2028, 2056, 2084
ก็เป็นอันรู้กันว่าปฏิทิน 2014 จะใช้อีกทีในปี 2025 และปีนี้ก็สามารถใช้ของปี 2009 ได้ แต่ส่วนใหญ่จะรอแค่ 6 ปี เช่น 2013 จะตรงกับ 2019 ส่วนปีที่มี 366 วันก็ต้องรอนานหน่อย
ถึงตรงนี้ก็ขอให้เข้าใจว่าชื่อเรื่อง “ปฏิทินวิเศษ” เป็นชื่อที่มีความหมายแฝง มันวิเศษเพราะเราใช้มันอย่างชาญฉลาด หรือพูดในอีกมุมก็คือวิทยาการล้ำหน้าแค่ไหนก็ตาม หากใช้อย่างไม่รู้จักคิดก็ไม่มีค่าจนถึงอาจเป็นโทษได้
โดย ดร.วัชรินทร์ วิชิรมาลา
ภาควิชาคณิตศาสตร์
จุฬาลงกรณ์มหาวิทยาลัย
wacharin@sc.chula.ac.th
ไอทีจีเนียส เอ็นจิเนียริ่ง (IT Genius Engineering) ให้บริการด้านไอทีครบวงจร ทั้งงานด้านการอบรม (Training) สัมมนา รับงานเขียนโปรแกรม เว็บไซต์ แอพพลิเคชั่น งานออกแบบกราฟิก และงานด้าน E-Marketing ที่กำลังได้รับความนิยมในปัจจุบัน ทั้ง SEO , PPC , และ Social media marketting
ติดต่อเราเพื่อสอบถามผลิตภัณฑ์ ขอราคา หรือปรึกษาเรื่องไอที ได้เลยค่ะ
Line : @itgenius (มี @ ด้านหน้า) หรือ https://lin.ee/xoFlBFeFacebook : https://www.facebook.com/itgeniusonline
Tel : 02-570-8449 มือถือ 088-807-9770 และ 092-841-7931
Email : contact@itgenius.co.th