Правило Судного дня , алгоритм Судного дня или метод Судного дня — это алгоритм определения дня недели для заданной даты. Он обеспечивает вечный календарь , поскольку григорианский календарь движется циклами по 400 лет. Алгоритм для ментального расчета был разработан Джоном Конвеем в 1973 году, [1] [2] черпая вдохновение из алгоритма вечного календаря Льюиса Кэрролла . [ 3] [4] [5] Он использует преимущество того, что каждый год имеет определенный день недели, на который выпадают определенные легко запоминающиеся даты, называемые Судными днями ; например, последний день февраля, 4 апреля (4/4), 6 июня (6/6), 8 августа (8/8), 10 октября (10/10) и 12 декабря (12/12) — все они приходятся на один и тот же день недели в любом году.
Применение алгоритма Судного дня включает три шага: определение якорного дня для столетия, вычисление якорного дня для года из дня для столетия и выбор ближайшей даты из тех, которые всегда выпадают на судный день, например, 4/4 и 6/6, и подсчет количества дней ( по модулю 7 ) между этой датой и рассматриваемой датой, чтобы получить день недели. Метод применим как к григорианскому, так и к юлианскому календарю , хотя их судные дни обычно являются разными днями недели.
Алгоритм достаточно прост, чтобы его можно было вычислить в уме. Обычно Конвей мог дать правильный ответ менее чем за две секунды. Чтобы улучшить свою скорость, он практиковал свои календарные вычисления на своем компьютере, который был запрограммирован на то, чтобы задавать ему вопросы со случайными датами каждый раз, когда он входил в систему. [6]
Опорный день Судного дня на текущий год по григорианскому календарю (2024) — четверг. Для некоторых других современных лет:
Таблица заполняется горизонтально, пропуская один столбец для каждого високосного года. Эта таблица циклична каждые 28 лет, за исключением григорианского календаря в годах, кратных 100 (например, 1800, 1900 и 2100, которые не являются високосными), которые также не кратны 400 (например, 2000, который все еще является високосным годом). Полный цикл составляет 28 лет (1461 неделя) в юлианском календаре и 400 лет (20 871 неделя) в григорианском календаре.
Можно найти день недели для заданной календарной даты, используя близлежащий судный день в качестве точки отсчета. Чтобы помочь с этим, ниже приведен список легко запоминающихся дат для каждого месяца, которые всегда попадают на судный день.
Последний день февраля всегда является концом света. Для января, 3 января является концом света в обычные годы, а 4 января - концом света в високосные годы, которые можно запомнить как "3-й в течение 3 лет в 4, и 4-й в 4-м году". Для марта можно запомнить либо день числа Пи , либо " 0 марта ", последний относится к дню перед 1 марта, т. е. последний день февраля.
В период с апреля по декабрь четные месяцы покрываются двойными датами 4/4, 6/6, 8/8, 10/10 и 12/12, все из которых приходятся на день конца света. Нечетные месяцы можно запомнить с помощью мнемонического приема «Я работаю с 9 до 5 в 7-11 », то есть 9/5, 7/11, а также 5/9 и 11/7 — все дни конца света (это справедливо как для конвенций «День/Месяц», так и для «Месяц/День»). [7]
Несколько известных дат, таких как День независимости в Соединенных Штатах , День подарков и День святого Валентина в обычные годы, также выпадают на дни конца света каждый год. В приведенной ниже таблице указаны только мнемонические приемы, описанные в перечисленных источниках.
Поскольку конец света для конкретного года напрямую связан с будними днями дат в период с марта по февраль следующего года, необходимо различать обычные и високосные годы для января и февраля одного и того же года.
Чтобы узнать, на какой день недели приходится Рождество 2021 года, действуйте следующим образом: в 2021 году конец света приходится на воскресенье. Поскольку 12 декабря — конец света, 25 декабря, то есть на тринадцать дней позже (на две недели меньше дня), выпало на субботу. Рождество всегда является днем недели перед концом света. Кроме того, 4 июля ( День независимости США ) всегда приходится на тот же день недели, что и конец света, как и Хэллоуин (31 октября), День числа Пи (14 марта) и 26 декабря ( День подарков ).
Поскольку этот алгоритм подразумевает обработку дней недели как чисел по модулю 7, Джон Конвей предложил думать о днях недели как о «Noneday» или «Sansday» (для воскресенья), «Oneday», «Twosday», «Treblesday», «Foursday», «Fiveday» и «Six-a-day», чтобы запомнить связь числа и дня недели без необходимости подсчитывать их в уме. [10]
Есть некоторые языки, такие как славянские языки , китайский , эстонский , греческий , португальский , галисийский и иврит , которые основывают некоторые из названий дней недели в их позиционном порядке . Славянские, китайские и эстонские языки согласны с таблицей выше; другие упомянутые языки отсчитывают день от воскресенья как первый.
Сначала возьмем якорный день для столетия. Для целей правила конца света столетие начинается с '00 и заканчивается на '99. В следующей таблице показаны якорные дни столетий 1600–1699, 1700–1799, 1800–1899, 1900–1999, 2000–2099, 2100–2199 и 2200–2299.
Для григорианского календаря:
Для юлианского календаря:
Примечание: .
Далее, найдите опорный день года. Чтобы достичь этого, согласно Конвею: [11]
Например, для 1966 года двадцатого века:
Как описано в пункте 4 выше, это эквивалентно:
Итак, конец света в 1966 году пришелся на понедельник.
Аналогично, конец света в 2005 году приходится на понедельник:
Расчет опорного дня конца света фактически вычисляет количество дней между любой заданной датой в базовом году и той же датой в текущем году, а затем берет остаток по модулю 7. Когда обе даты наступают после високосного дня (если таковой имеется), разница составляет всего 365 лет + у/4 (округлено вниз). Но 365 равно 52 × 7 + 1, поэтому после вычитания остатка мы получаем просто
Это дает более простую формулу, если вам удобно делить большие значения y как на 4, так и на 7. Например, мы можем вычислить
что дает тот же ответ, что и в примере выше.
Где появляется 12, так это в том, что шаблон почти повторяется каждые 12 лет. Через 12 лет мы получаем . Если мы заменим y на y mod 12 , мы отбросим этот дополнительный день; но добавление обратно компенсирует эту ошибку, давая окончательную формулу.
Для расчета григорианского опорного дня столетия: за тремя «обычными столетиями» (каждое из которых содержит 24 високосных года) следует «високосное столетие» (содержащее 25 високосных лет). Обычный век сдвигает конец света вперед на
дней (эквивалентно двум дням назад). Високосный век сдвигает конец света вперед на 6 дней (эквивалентно одному дню назад).
Так что столетия отодвигают конец света вперед
но это эквивалентно
Четыре столетия отодвигают конец света на
Таким образом, четыре столетия образуют цикл, который оставляет конец света неизменным (отсюда и «mod 4» в формуле столетия).
Более простой метод нахождения опорного дня года был открыт в 2010 году Чемберленом Фонгом и Майклом К. Уолтерсом [12] и описан в их статье, представленной на 7-м Международном конгрессе по промышленной и прикладной математике (2011). Названный методом «нечетных + 11», он эквивалентен [12] вычислению
Он хорошо подходит для устного счета, поскольку не требует деления на 4 (или 12), а процедура легко запоминается из-за многократного использования правила «нечетное + 11». Кроме того, сложение по 11 очень легко выполняется в уме в десятичной арифметике .
Распространяя это на день привязки, процедуру часто описывают как накопление промежуточного итога T за шесть шагов, как указано ниже:
Применив этот метод, например, к 2005 году, можно выполнить следующие шаги:
Явная формула для метода нечетного+11 выглядит следующим образом:
Хотя это выражение выглядит пугающим и сложным, на самом деле оно простое [12] из-за общего подвыражения у + 11( у mod 2)/2 который нужно рассчитать только один раз.
Всякий раз, когда необходимо прибавить 11, вычитание 17 дает эквивалентные результаты. Хотя вычитание 17 может показаться более сложным для мысленного выполнения, чем сложение 11, есть случаи, когда вычитание 17 проще, особенно когда число является двузначным и заканчивается на 7 (например, 17, 27, 37, ..., 77, 87 и 97).
Конец света связан с главной буквой года следующим образом.
В таблице ниже найдите букву господнего имени (DL).
В 2024 году господствующая буква — BA + 2 = GF.
* В високосные годы n-й день конца света приходится на неделю ISO n . В обычные годы день после n-го дня конца света приходится на неделю n . Таким образом, в обычные годы номер недели самого дня конца света на единицу меньше, если это воскресенье, т. е. в обычные годы, начинающиеся в пятницу (например, 2010, 2021 и 2027).
Для компьютерного использования удобны следующие формулы для определения опорного дня года.
Для григорианского календаря:
Например, конец света в 2009 году приходится на субботу по григорианскому календарю (принятому в настоящее время календарю), поскольку
В качестве другого примера, конец света 1946 года приходится на четверг, поскольку
Для юлианского календаря:
Формулы применимы также для пролептического григорианского календаря и пролептического юлианского календаря . Они используют функцию пола и астрономическую нумерацию лет до нашей эры.
Для сравнения см. расчет номера юлианского дня .
Поскольку в григорианском календаре 146 097 дней, или ровно 20 871 семидневная неделя, за 400 лет, день якоря повторяется каждые четыре столетия. Например, день якоря 1700–1799 годов совпадает с днем якоря 2100–2199 годов, то есть воскресенье.
Полный 400-летний цикл Судных дней приведен в соседней таблице. Столетия указаны для григорианского и пролептического григорианского календаря , если только они не отмечены буквой J для юлианского. Григорианские високосные годы выделены.
Отрицательные годы используют астрономическую нумерацию лет . Год 25 до н.э. равен −24, показан в столбце −100J (пролептический юлианский) или −100 (пролептический григорианский), в строке 76.
Високосный год с понедельником как концом света означает, что воскресенье является одним из 97 дней, пропущенных в 400-летней последовательности. Таким образом, общее количество лет с воскресеньем как концом света составляет 71 минус количество високосных лет с понедельником как концом света и т. д. Поскольку понедельник как конец света пропускается до 29 февраля 2000 года, а шаблон високосных дней симметричен относительно этого високосного дня, частоты концов света в будний день (с учетом обычных и високосных лет) симметричны относительно понедельника. Частоты концов света високосных лет в будний день симметричны относительно кончины света 2000 года, вторника.
Частоту попадания определенной даты в определенный день недели можно легко вывести из вышесказанного (для даты с 1 января по 28 февраля соотнесите ее с днем конца света предыдущего года).
Например, 28 февраля — это один день после конца света предыдущего года, поэтому он приходится на вторник, четверг, воскресенье и т. д. по 58 раз. 29 февраля — конец света високосного года, поэтому он приходится на понедельник, среду и т. д. по 15 раз.
Что касается частоты Судных дней в юлианском 28-летнем цикле, то на каждый будний день приходится 1 високосный год и 3 обычных года, последний из которых наступает через 6, 17 и 23 года после первого (то есть с интервалами в 6, 11, 6 и 5 лет; распределено неравномерно, поскольку после 12 лет день пропускается в последовательности Судных дней). [ необходима цитата ] Тот же цикл применяется к любой заданной дате с 1 марта, выпадающей на определенный будний день.
Для любой заданной даты до 28 февраля, выпадающей на определенный день недели, 3 обычных года — это 5, 11 и 22 года после високосного года, то есть с интервалами в 5, 6, 11 и 6 лет. Таким образом, цикл тот же самый, но с 5-летним интервалом после, а не до високосного года.
Таким образом, для любой даты, кроме 29 февраля, интервалы между невисокосными годами, приходящимися на определенный день недели, составляют 6, 11, 11. См., например, внизу страницы Невисокосный год, начинающийся в понедельник, годы в диапазоне 1906–2091.
Такой день, как 29 февраля, приходится на определенный день недели, случается только один раз в 28 лет, и, конечно же, это високосный год.
Григорианский календарь в настоящее время точно совпадает с астрономическими событиями, такими как солнцестояния . В 1582 году эта модификация юлианского календаря была впервые введена. Чтобы исправить дрейф календаря, 10 дней были пропущены, поэтому конец света сдвинулся на 10 дней назад (т. е. на 3 дня): за четвергом 4 октября (по юлианскому календарю, конец света — среда) последовала пятница 15 октября (по григорианскому календарю, конец света — воскресенье). Таблица включает годы юлианского календаря, но алгоритм предназначен только для григорианского и пролептического григорианского календаря.
Обратите внимание, что григорианский календарь не был принят одновременно во всех странах, поэтому на протяжении многих веков в разных регионах использовались разные даты для одного и того же дня.
Предположим, мы хотим узнать день недели 18 сентября 1985 года. Начнем с опорного дня столетия, среды. К этому добавим a , b , и c выше:
Это дает a + b + c = 8. Отсчитав 8 дней от среды, мы приходим к четвергу, который является концом света в 1985 году. (Используя числа: в арифметике по модулю 7, 8 сравнимо с 1. Поскольку опорный день столетия — среда (индекс 3), а 3 + 1 = 4, концом света в 1985 году был четверг (индекс 4).) Теперь сравним 18 сентября с близлежащим концом света, 5 сентября. Мы видим, что 18-е число — это 13-е число после конца света, т. е. на один день меньше двух недель. Следовательно, 18-е было средой (днем, предшествующим четвергу). (Использование чисел: в арифметике по модулю 7 13 сравнимо с 6 или, короче, с −1. Таким образом, мы отнимаем единицу от дня конца света, четверга, и получаем, что 18 сентября 1985 года было средой.)
Предположим, что мы хотим найти день недели, когда в Форте Самтер началась Гражданская война в США , а именно 12 апреля 1861 года. Опорный день для столетия был через 94 дня после вторника, или, другими словами, пятницы (рассчитывается как 18 × 5 + ⌊ 18/4 ⌋ ; или просто посмотрите на таблицу выше, где перечислены опорные дни столетия). Цифры 61 давали смещение в шесть дней, поэтому судный день был в четверг. Следовательно, 4 апреля был четвергом, поэтому 12 апреля, восемь дней спустя, было пятницей.
В каждом обычном году Судный день на 1 день позже, чем в предыдущем году, а в каждом високосном году на 2 дня позже. Из этого следует, что в пределах любого данного столетия дюжина лет приближает Судный день на 12 + 3 = 15 дней = 1 день. («Дюжина лет — это всего лишь день».) Поэтому мы добавляем к Судному дню для года столетия количество дюжин лет после этого, остаток и количество четверок в остатке.