Thuật toán Doomsday
Thuật toán Doomsday là một phương pháp được phát minh vào những năm 1970 bởi tiến sĩ John Horton Conway, một nhà toán học nổi tiếng. Đây được coi là phương pháp đơn giản và dễ nhớ nhất so với các cách thức khác.
Doomsday của một năm
Mọi thuật toán tính thứ của một ngày đều phải biết được thứ của một ngày nào đó trong năm. Từ đó suy ra thứ những ngày còn lại trong tuần.
Trước tiên, bạn cần biết về khái niệm Doomsday.
Doomsday của một năm là ngày cuối cùng của tháng Hai, tức là ngày 28/2 năm thường và 29/2 năm nhuận. Ví dụ: Doomsday của năm 2004 (năm nhuận) là Chủ nhật 29/2.
Tính thứ các ngày trong tháng 2
Khi biết được Doomsday, bạn sẽ tính được thứ của các ngày khác trong tháng hai bằng cách lấy Doomsday làm mốc và tính ngược lại từng tuần.
Chẳng hạn như, để biết ngày 14/2/2004 là thứ mấy, bạn làm như sau: 29-7=22, 22-7=15, ngày 22/2 và 15/2 đều là Chủ nhật, như vậy 14/2 là thứ Bảy.
Tính thứ các ngày khác tháng 2
Để biết cách tính thứ của một ngày ở các tháng còn lại, chúng ta chia làm 2 loại:
a. Tháng chẵn
Cách tính đối với những tháng chẵn: các tháng 4, 6, 8, 10, 12.
Đối với các tháng chẵn này, các ngày sau sẽ có thứ trùng với Doomsday: 4/4, 6/6, 8/8, 10/10, 12/12. Rất dễ nhớ đúng không nào!
Trong năm 2004, các ngày trên đều là Chủ nhật (trùng với thứ của ngày 29/2). Áp dụng cách tính giống tháng Hai, bạn sẽ tính được thứ của bất cứ ngày nào trong các tháng chẵn.
b. Tháng lẻ
Trước hết chúng ta xét các tháng 5, 7, 9, 11. Các ngày 9/5, 5/9, 11/7, 7/11 sẽ có thứ trùng với Doomsday. Cũng rất dễ nhớ phải không!
Còn với tháng 3? Doomsday (28/2 hoặc 29/2) có thể coi là ngày 0/3. Vì vậy ngày 7/3 sẽ có thứ trùng với Doomsday.
Tháng 1 thì hơi đặc biệt
– Với năm thường, ngày 31/1 sẽ có thứ trùng với Doomsday (28 ngày sau ngày 31/1 là ngày 28/2 chính là Doomsday).
– Với năm nhuận, Doomsday là ngày 29/2 nên ngày 1/2 (coi như là ngày 32/1) có thứ trùng với Doomsday, do vậy, ngày 31/1 có thứ trước Doomsday một ngày.
Tính Doomday như thế nào?
Doomsday của năm 2004 là Chủ nhật 29/2, vậy Doomsday của năm 2003 là thứ mấy? Chính là thứ Sáu.
Bởi vì 2004 là năm nhuận 366 ngày, 366 chia 7 dư 2, vì vậy Doomsday của năm 2003 phải lùi 2 ngày nên là thứ Sáu.
Tương tự, Doomsday của năm 2002 là thứ Năm vì 2003 là năm thường 365 ngày, 365 chia 7 dư 1.
Như vậy, Doomsday của một năm trước năm thường lùi 1 ngày, Doomsday của một năm trước năm nhuận lùi 2 ngày.
Áp dụng cách này, biết Doomsday của một năm nào đó, ta tính được Doomsday của những trước đó. Tuy nhiên, cách này chỉ áp dụng cho một số trường hợp.
Có một bảng liệt kê chi tiết Doomsday của những năm trong thế kỷ 20. Chúng ta sinh ra và sống trong thế kỷ 20 nên bảng này sẽ được dùng nhiều.
Nhưng thật khó để mà thuộc lòng hết bảng. Không vấn đề gì, có một cách tính khác giúp bạn biết được Doomsday của từng năm trong thế kỷ 20.
Trước hết bạn cần nhớ Doomsday của năm 1900 là thứ Tư. Cứ 4 năm thì có một năm nhuận, vì vậy Doomsday mỗi 4 năm cách nhau 5 ngày.
Ta sẽ ghi nhớ chu kỳ 12 năm này (tiện lợi vì con số chênh lệch chỉ là 1).
Chẳng hạn như, ta tính được Doomsday của năm 1914 là thứ Bảy, bởi vì Doomsday của năm 1900 là thứ Tư nên Doomsday của năm 1912 (12 năm sau) là thứ Năm, nên Doomsday của năm 1914 là thứ Bảy.
Đối với một năm bất kỳ trong thế kỷ 20 (19xy), bạn tính Doomsday theo quy tắc sau:
– a là thương của phép chia xy cho 12.
– b là số dư của phép chia xy cho 12.
– c là thương của phép chia b cho 4 (biết số năm nhuận để tính số ngày cộng thêm).
– d=a+b+c.
– e là số dư phép chia d cho 7.
– Doomsday của năm 19xy sẽ có thứ sau Doomsday của năm 1900 (thứ tư) e ngày, tức là cộng thêm e ngày.
Ví dụ: Doomsday của năm 1929 là thứ mấy?
Trả lời:
a = 29 div 12 = 2
b = 29 mod 12 = 5
c = b div 4 = 5 div 4 = 1
d = a+b+c = 2+5+1 = 8
e = d mod 7 = 8 mod 7 = 1. Sau thứ tư 1 ngày là thứ năm.
Đối với những thế kỷ khác, cách tính Doomsday cũng tương tự như đối với thế kỷ 20
Vấn đề ở đây là bạn cần biết Doomsday của năm đầu tiên của thế kỷ. Bảng bên cung cấp cho bạn Doomsday của năm đầu của một số thế kỷ. Để nhớ bảng này cũng không quá khó.
Doomsday của năm đầu trong một số thế kỷ:
CN T3 T4 T6
1700 1600 1500
2100 2000 1900 1800
2500 2400 2300 2200
Cùng thực hành xem nhé:
Giả sử bạn muốn tính thứ của ngày có dạng sau: Dd/mm/ABCD.
Bước 1:
Tìm Doomsday năm đầu thế kỉ (trong bảng phần trước), chẳng hạn là thứ X.
Bước 2:
Tính Doomsday của năm ABCD (nó là năm nhuận khi 2C + D chia hết cho 4)
Lấy CD chia 12 được a dư b, b chia 4 được c.
Tính tổng a+b+c=d chia 7 dư e.
Như vậy, Doomsday của năm ABCD là +e đối với thứ X.
Bước 3:
Lúc này, ta đã biết Doomsday. Từ đó
– Biết thứ tháng chẵn (Doomsday 28 hay 29/2 trùng 4/4, 6/6, 8/8, 10/10, 12/12)
– Biết thứ tháng 1 (Doomsday trùng 3/1 năm thường, 4/1 năm nhuận)
– Biết thứ tháng 3 (Doomsday trùng 7/3)
– Biết thứ tháng lẻ còn lại (Doomsday trùng 9/5, 5/9, 7/11, 11/7)
Ví dụ 1: Tính thứ của 24/5/1991 và 6/6/1991.
Bước 1:
Doomsday năm 1900 là thứ Tư.
Bước 2:
Vì tính thứ trong tháng 5 và tháng 6 nên ta chẳng cần tính 1991 là năm nhuận hay không làm gì. 91 chia 12 được 7 dư 7, 7 chia 4 được 1. 7+7+1=15 chia 7 dư 1. Doomsday 1991 là thứ Tư +1 = thứ Năm.
Bước 3:
9/5 trùng Doomsday là thứ Năm, 23/5 cũng là thứ Năm.
Vậy 24/5/1991 là thứ Sáu.
6/6 trùng Doomsday là thứ Năm.
Vậy 6/6/1991 là thứ Năm.
Ví dụ 2: Tính thứ của 26/1/1992.
Bước 1:
Doomsday năm 1900 là thứ Tư.
Bước 2:
Vì tính thứ trong tháng 1 nên ta cần tính 1992 là năm nhuận hay không. Ta có 2.9+2=20 chia hết cho 4 nên 1992 là năm Nhuận.
92 chia 12 được 7 dư 8, 8 chia 4 được 2. 7+8+2=17 chia 7 dư 3.
Doomsday 1992 là thứ Tư +3 = thứ Bảy.
Bước 3:
4/1 là thứ Bảy, 25/1 cũng là thứ Bảy.
Vậy 26/1/1992 là Chủ nhật.