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

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

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

Алгоритм

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

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

Дни недели, приходящиеся на 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), всегда совпадают с днём недели, приходящимся на последний день февраля. Например, в 2022 году последний день февраля — понедельник и 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) — годовщина Октябрьской революции), а вторая дата из пары получается перестановкой дня месяца и номер месяца. В английском языке известна запоминалка: «I work from 9 to 5 at the 7-11» — «Я работаю с 9 до 5 в магазине „семь-одиннадцать“»[1].

Дни недели, приходящиеся на 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 году — среда).

Итого:

Таблица для запоминания
МесяцПоследний день февраляВ високосных годахЗапоминалка
Январь03.0104.01Три года 03, в четвёртом — 04
Февраль28.0229.02Последний
Март«00».03«Нулевой» и все, делимые на 7
Апрель04.04
Май09.05Nine to five[2]
Июнь06.06
Июль11.07Seven-eleven[1]
Август08.08
Сентябрь05.09Nine to five[2]
Октябрь10.10
Ноябрь07.11Seven-eleven[1]
Декабрь12.12

Примечания

  1. «7-Eleven» — название международной торговой сети японских магазинов.
  2. В английском языке — разговорное название стандартного восьмичасового рабочего дня: «с девяти [утра] до пяти [вечера]».

Литература

  • 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

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.