כלל יום הדין

[ממוזער|[ג'ון הורטון קונוויי|ג'ון קונוויי, ממציא אלגוריתם יום הדין.]]
**כלל יום הדין** (באנגלית: **Doomsday rule**) או **אלגוריתם יום הדין** (באנגלית: **Doomsday algorithm**) הוא אלגוריתם המאפשר לחשב את היום בשבוע שבו חל תאריך נתון בלוח השנה הגרגוריאני (ספירת הנוצרים). הוא נעזר בכך שללוח הגרגוריאני יש מחזוריות בת ארבע מאות שנה וכך האלגוריתם מוגדר לתמיד.

האלגוריתם, שמאפשר חישוב בראש, הומצא על ידי ג'ון הורטון קונוויי שקיבל השראה מעבודתו של לואיס קרול על אלגוריתם ללוח שנה נצחי. 

## עקרונות האלגוריתם
האלגוריתם מתבסס על כך שבכל שנה יש יום מסוים בשבוע (יום הדין) שכמה תאריכים קלים לזכירה חלים בו; לדוגמה, 4/4, 6/6, 8/8, 10/10, 12/12 והיום האחרון של חודש פברואר (28/2; וכאשר השנה מתחלקת ב-4, 29/2). יישום אלגוריתם יום הדין כרוך בשלושה שלבים:
# קביעת "יום העוגן" של המאה.
# שימוש ב"יום העוגן" לחישוב יום הדין של השנה.
# בחירת התאריך הקרוב ביותר מאלה שנופלים על יום הדין (למשל 4/4, 6/6, 8/8) וספירת מספר הימים (מודולו 7) בין התאריך לבין התאריך שרוצים למצוא באיזה יום הוא חל.

ניתן להשתמש בטבלת ימי דין, כמפורט בהמשך, כדי לדלג על שלבים 1 ו-2.

הטכניקה חלה הן על לוח השנה הגרגוריאני והן על הלוח היוליאני, אף-על-פי שפעמים רבות "ימי הדין" שלהם יציינו ימים שונים.

האלגוריתם פשוט דיו לחישוב בראש, לכל אחד עם יכולות אריתמטיות בסיסיות. קונוויי יכול היה בדרך כלל לעשות את החישוב תוך פחות משתי שניות. כדי לשפר את מהירותו, הוא תירגל את החישובים בעזרת מחשב, שמתוכנת לשאול אותו לגבי תאריך אקראי בכל פעם בו הוא נכנס אליו.

## טבלת ימי דין
כדי למצוא את יום הדין של השנה (לפי הלוח הגרגוריאני), ניתן להיעזר בטבלה הבאה. בהמשך הערך מופיעה שיטה למציאת יום הדין בלא טבלה.

ניתן לראות כי לפני שנה שאינה מעוברת יום הדין זז ליום הבא - זאת משום שמספר הימים בשנה שאינה מעוברת (365) מודולו 7 יוצא 1. לעומת זאת, לפני שנה מעוברת יום הדין זז ביומיים משום שמספר הימים בשנה מעוברת (366) מודולו 7 יוצא 2, ומכאן שתהא תזוזה של יומיים.
## תאריכים קלים לזכירה שיוצאים תמיד ביום הדין
בכל שנה, תאריכים אלו (על פי הלוח הגרגוריאני) חלים ביום הדין. 

## מציאת יום הדין בלא טבלה
ישנם מספר אלגוריתמים למציאת יום הדין של השנה ללא טבלת שנים, כמו זו שמופיעה לעיל. השיטה מתבססת על חישוב התזוזות של הימים החל מ"יום העוגן" של המאה. 
### מציאת "יום העוגן" של המאה
לצורכי מציאת יום הדין נאמר כי מאה מתחילה בשנה המסתיימת בספרות 00' ונגמרת בשנה המסתיימת בספרות 99'.

כאשר c = \lfloor year/100 \rfloor

עבור הלוח הגרגוריאני:
:(5\times(c\bmod 4)+ \rm{2)\bmod 7 = anchor}
עבור הלוח היוליאני:
:(6\times(c\bmod 7)\bmod 7 + \rm{1)\bmod 7 = anchor}

כאשר 0=ראשון, 1=שני וכן הלאה עד 6=שבת.

מכאן ש:

### חישוב יום הדין של השנה באמצעות יום העוגן של המאה
ישנם מספר אלגוריתמים למציאת יום הדין של השנה. דוגמה לאלגוריתם כזה הוא האלגוריתם הבא:
# חלק את שתי הספרות האחרונות של השנה ב-12, ועגל כלפי מטה (פונקציית הערך השלם). קרא לתוצאה a.
# שארית החלוקה מן השלב הקודם יקרא b.
# חלק את b ב-4 ועגל כלפי מטה. נקרא לתוצאה c.
# חבר את שלוש התוצאות (a,b,c). לסכום הוסף את ערכו של יום העוגן (ראשון=0, שני=1 וכן הלאה).
# חלק את התוצאה ב-7. השארית היא ערכו של יום הדין (ראשון=0, שני=1 וכן הלאה).

כלומר:
:\begin{matrix}\left({\left\lfloor{\frac{y}{12}}\right\rfloor+y \bmod 12+\left\lfloor{\frac{y \bmod 12}{4}}\right\rfloor} +\rm{anchor}\right)\bmod 7=\rm{Doomsday}\end{matrix}

## דוגמאות מלאות
### דוגמה א'
נניח שנרצה למצוא את היום בשבוע בו חל ה-18 בספטמבר 1985. יום העוגן של המאה הוא רביעי (אינדקס 3), ועליו לפי האלגוריתם נוסיף את a, b, c.
*a הוא פונקציית הערך השלם של 85/12, כלומר 7.
*b הוא 85 מודולו 12, כלומר 1
*c הוא פונקציית הערך השלם של b/4, כלומר 0.
חיבור של a,b,c ויום העוגן יוצא 11. 11 מודולו 7 הוא 4, ומכאן שיום הדין של 1985 הוא חמישי (אינדקס 4). כעת נשווה את התאריך ליום דין קרוב, נניח ה-5/9. ההפרש בין שני התאריכים הוא 13 יום. נוסיף למספר זה את ערכו של יום הדין השנתי, ונגיע ל-17. 17 מודולו 7 הוא 3, ומכאן שה-18 בספטמבר 1985 חל ביום רביעי (אינדקס 3). 
### דוגמה ב'
נניח שנרצה למצוא את היום בשבוע בו פרצה מלחמת האזרחים האמריקנית בפורט סאמטר, שהיה ב-12 באפריל 1861. נוכל למצוא את יום העוגן באמצעות הטבלה שלעיל או לחשבו - 18 מודולו 4 הוא 2, כפול 5 הוא 10, ועוד 2 הוא 12, מודולו 7 הוא 5 (יום שישי). באמצעות חישוב a,b,c בדומה לדוגמה לעיל, סיכומם והוספת 5, נקבל 11. 11 מודולו 7 הוא 4, ומכאן שיום הדין היה בחמישי (אינדקס 4). נשתמש ביום הדין 4/4 שחל 8 ימים קודם לפני ה-12 באפריל. 8+4 הם 12. 12 מודולו 7 הוא 5 (יום שישי). מכאן שה-12 באפריל 1861 חל בשישי. 

## הערות שוליים

קטגוריה:אלגוריתמים
קטגוריה:הלוח הגרגוריאני
קטגוריה:הלוח היוליאני
קטגוריה:ג'ון הורטון קונוויי