Алгоритм Судного дня

Алгоритм (метод) судного дня () — алгоритм, позволяющий в уме посчитать, какой день недели приходится на выбранную дату. Разработан около 1970 года британским математиком Джоном Конвеем. Применим для дат по григорианскому календарю, но существуют модификации для юлианского календаря.

Алгоритм опирается на так называемый «судный день» (). «Судным» назван последний день февраля — 28-е февраля невисокосного года или 29-е февраля високосного года. Зная день недели, приходящийся на последний день февраля выбранного года, и пользуясь алгоритмом, можно узнать день недели любой даты выбранного года.

Алгоритм 
Перед использованием алгоритма требуется узнать, какой день недели приходится на последний день февраля выбранного года. В  году последний день февраля —
. Если следующий год невисокосный, то день недели последнего дня февраля следующего года будет смещён от дня недели последнего дня февраля текущего года на один день вперёд; если високосный, то — на два дня вперёд.

Опишем используемые алгоритмом закономерности.

Дни недели, приходящиеся на 4 апреля (04.04), 9 мая (09.05), 6 июня (06.06), 11 июля (11.07), 8 августа (08.08), 5 сентября (05.09), 10 октября (10.10), 7 ноября (07.11), 12 декабря (12.12), всегда совпадают с днём недели, приходящимся на последний день февраля. Например, в  году последний день февраля —
 и 4 апреля — тоже
. Для запоминания дат 04.04, 06.06, 08.08, 10.10, 12.12 можно заметить, что для чётных месяцев, начиная с апреля (4-го месяца), день месяца совпадает с номером месяца. Для запоминания пары 09.05, 05.09 и пары 07.11, 11.07 можно заметить, что на первую дату из пары приходится праздник (9-е мая (09.05) — День Победы; 7-е ноября (07.11) — годовщина Октябрьской революции), а вторая дата из пары получается перестановкой дня месяца и номер месяца. В английском языке известна запоминалка: «» — «Я работаю с 9 до 5 в магазине „семь-одиннадцать“».

Дни недели, приходящиеся на 3 января невисокосного года и на 4 января високосного года, совпадают с днём недели, приходящимся на последний день февраля (три невисокосных года — третье января, в четвёртом (високосном) году — четвёртое января).

Дни недели, приходящиеся на 7 марта (07.03), 14 марта (14.03), 21 марта (21.03) и 28 марта (28.03), совпадают с днём недели, приходящимся на последний день февраля. Заметим, что дни марта (7 , 14, 21, 28) кратны семи.

Далее перечислены месяцы, для которых при совпадении дней месяцев совпадают и дни недели:
 январь високосных годов, апрель, июль;
 январь и октябрь невисокосных годов;
 февраль невисокосных годов, март и ноябрь;
 февраль и август високосных годов;
 сентябрь и декабрь.

Например, совпадают дни недели для 4 апреля и 4 июля (в 2021 году — воскресенье, в 2022 году — понедельник, в 2023 году — вторник), для 8 марта и 8 ноября (в 2021 году — понедельник), для 1 сентября и 1 декабря (в 2021 году — среда).

Итого:

Примечания

Литература 
 John Conway, Elwyn Berlekamp, Richard Guy: Winning Ways For Your Mathematical Plays. Vol. 2: Games in Particular. Academic Press, London 1982, 795—797. ISBN 0-120-91102-7

Ссылки 
 Lewis Carroll’s 1887 Weekday Rule, 2011
 COWAFOGO • Weekday Solving Simplified, 2011
 Encyclopedia of Weekday Calculation by Hans-Christian Solka, 2010
 Doomsday calculator that also «shows all work»
 World records for mentally calculating the day of the week in the Gregorian Calendar 
 What is the day of the week, given any date?
 Doomsday Algorithm
 Finding the Day of the Week

Григорианский календарь
Джон Конвей
Календарные алгоритмы