Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску
Джон Конвей , изобретатель алгоритма судного дня, умерший 15-го судного дня 2020 года.

Правило Doomsday является алгоритмом из определения дня недели для данной даты. Он обеспечивает вечный календарь, потому что григорианский календарь движется циклами по 400 лет. Алгоритм мысленных вычислений был разработан Джоном Конвеем в 1973 году [1] [2], черпая вдохновение из алгоритма вечного календаря Льюиса Кэрролла . [3] [4] [5] Он использует то, что каждый год имеет определенный день недели, когда наступают определенные легко запоминающиеся даты, называемые судными днями., Осень; например, последний день февраля: 4/4, 6/6, 8/8, 10/10 и 12/12 - все происходит в один и тот же день недели любого года. Применение алгоритма Судного дня включает три этапа: определение дня привязки для века, вычисление дня привязки для года по сравнению с днем ​​для века и выбор ближайшей даты из тех, которые всегда приходятся на конец света, например, 4/4 и 6/6, и подсчет количества дней ( по модулю 7 ) между этой датой и рассматриваемой датой, чтобы наступил день недели. Этот метод применим как к григорианскому, так и к юлианскому календарю , хотя их судные дни обычно являются разными днями недели.

Алгоритм достаточно прост, чтобы его можно было вычислить мысленно. Обычно Конвей мог дать правильный ответ менее чем за две секунды. Чтобы улучшить свою скорость, он практиковал свои календарные вычисления на своем компьютере, который был запрограммирован так, чтобы опрашивать его со случайными датами каждый раз, когда он входил в систему. [6]

Якорные дни для некоторых современных лет [ править ]

Якорным днем ​​Судного дня для текущего года по григорианскому календарю (2021 г.) является воскресенье. Для некоторых других современных лет:

Таблица заполняется по горизонтали, пропуская по одному столбцу для каждого високосного года. Эта таблица циклически повторяется каждые 28 лет, за исключением григорианского календаря по годам, кратным 100 (например, 1900 год, который не является високосным), который также не кратен 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]

Судный день также приходится на несколько общих праздников. В приведенной ниже таблице включены только даты, указанные в мнемониках перечисленных источников.

Поскольку судный день конкретного года напрямую связан с днями недели в период с марта по февраль следующего года, обычные и високосные годы следует различать для января и февраля того же года.

Январь и февраль можно рассматривать как последние два месяца предыдущего года.

Пример [ править ]

Чтобы узнать, какой день недели был Рождеством 2018 года, действуйте следующим образом: в 2018 году судным днем ​​была среда. Поскольку 12 декабря - судный день, 25 декабря, то есть через тринадцать дней после этого (на две недели меньше дня), выпало на вторник. Рождество - это всегда день перед концом света. Кроме того, 4 июля ( День независимости США ) всегда считается концом света, как и Хэллоуин (31 октября), День числа Пи (14 марта) и День подарков (26 декабря).

Мнемонические названия дней недели [ править ]

Поскольку этот алгоритм включает обработку дней недели как чисел по модулю 7, Джон Конвей предложил думать о днях недели как о «Noneday»; или как «Сандай» (для воскресенья), «Один день», «Два дня», «Тройной день», «Четвертый день», «Пятидневный день» и «Шесть в день», чтобы вспомнить соотношение числа и дня недели без необходимости сосчитайте их в голове.

Есть некоторые языки, такие как славянские языки , греческий , португальский , галисийский , иврит и китайский , в которых названия дней недели располагаются в порядке расположения .

Как найти день привязки года [ править ]

Сначала возьмем день якоря для века. Согласно правилу судного дня, век начинается с 00 и заканчивается 99 годом. В следующей таблице показаны дни якоря веков 1800–1899, 1900–1999, 2000–2099 и 2100–2199.

Для григорианского календаря:

Математическая формула
5 × ( c mod 4) mod 7 + вторник = якорь.
Алгоритмический
Пусть r = c mod 4
если r = 0, то якорь = вторник
если r = 1, то якорь = воскресенье
если r = 2, то якорь = пятница
если r = 3, то якорь = среда

Для юлианского календаря:

6 c mod 7 + воскресенье = якорь.

Примечание: c = ⌊год/100 .

Затем найдите день привязки года. Для этого, по словам Конвея:

  1. Разделить года две последние цифры (назовем это у ) на 12 и пусть быть пол из частного .
  2. Пусть b будет остатком того же частного.
  3. Разделите этот остаток на 4 и пусть c будет нижним пределом частного.
  4. Пусть d будет суммой трех чисел ( d = a + b + c ). (Здесь снова можно разделить на семь и взять остаток. Это число эквивалентно, как и должно быть, сумме двух последних цифр года, взятых вместе, плюс пол этих общих цифр, разделенных на четыре.)
  5. Обратный отсчет на указанное количество дней ( d или оставшаяся частьd/7) от якорного дня, чтобы получить годовой.

Например, для 1966 года двадцатого века:

Как описано в пункте 4 выше, это эквивалентно:

Итак, конец света 1966 года пришелся на понедельник.

Точно так же конец света в 2005 году приходится на понедельник:

Почему это работает [ править ]

Правило судного дня

Расчет дня привязки судного дня фактически вычисляет количество дней между любой заданной датой в базовом году и той же датой в текущем году, а затем берет остаток по модулю 7. Когда обе даты наступают после високосного дня (если есть), разница лишь 365 г +y/4(округлено в меньшую сторону). Но 365 равно 52 × 7 + 1, поэтому после вычисления остатка мы получаем просто

Это дает более простую формулу, если удобно делить большие значения y на 4 и 7. Например, мы можем вычислить

что дает тот же ответ, что и в приведенном выше примере.

На место 12 приходится то, что образец ( y + ⌊y/4⌋) мод 7 почти повторяется каждые 12 лет. Через 12 лет получаем (12+12/4) мод 7 = 15 мод 7 = 1 . Если мы заменим y на y mod 12 , мы потеряем этот лишний день; но добавив обратно y/12 компенсирует эту ошибку, давая окончательную формулу.

Метод "odd + 11" [ править ]

Простая блок-схема, показывающая метод Odd + 11

Более простой метод определения дня привязки года был открыт в 2010 году Чемберленом Фонгом и Майклом К. Уолтерсом [9] и описан в их статье, представленной на 7-м Международном конгрессе по промышленной и прикладной математике (2011). Названный методом «odd + 11», он эквивалентен [9] вычислению

.

Он хорошо подходит для мысленных вычислений, поскольку не требует деления на 4 (или 12), и процедуру легко запомнить, поскольку в ней многократно используется правило «нечетное + 11».

Расширяя это, чтобы получить день привязки, процедура часто описывается как накопление промежуточной суммы T за шесть шагов, как показано ниже:

  1. Пусть T будут двумя последними цифрами года.
  2. Если T нечетное, добавьте 11.
  3. Пусть теперь T =Т/2.
  4. Если T нечетное, добавьте 11.
  5. Пусть теперь T = 7 - ( T mod 7) .
  6. Отсчитайте вперед T дней от дня якоря века, чтобы получить день якоря года.

Например, применив этот метод к 2005 году, шаги, как описано, будут следующими:

  1. Т = 5
  2. T = 5 + 11 = 16 (добавляем 11, потому что T нечетное)
  3. Т =16/2 = 8
  4. T = 8 (ничего не делать, так как T четное)
  5. Т = 7 - (8 мод 7) = 7 - 1 = 6
  6. Судный день на 2005 год = 6 + вторник = понедельник

Явная формула для метода нечетных + 11:

.

Хотя это выражение выглядит пугающим и сложным, на самом деле оно простое [9] из-за общего подвыражения у + 11 ( у мод 2)/2 это нужно рассчитать только один раз.

Переписка с доминантским письмом [ править ]

Судный день связан с доминирующей буквой года следующим образом.

Найдите в приведенной ниже таблице доминирующую букву (DL).

Для 2017 года доминирующая буква A - 0 = A [ необходимо обновить ] .

Обзор всех Судных дней [ править ]

* В високосные годы п - й конец света в ISO неделю п . В общих лет на следующий день после п - й конец света в неделю н . Таким образом, в обычном году номер недели самого Судного дня на единицу меньше, если это воскресенье, то есть в обычном году, начинающемся с пятницы .

Компьютерная формула для якорного дня в году [ править ]

Для использования компьютера удобны следующие формулы для дня привязки в году.

Для григорианского календаря:

Например, судный день 2009 года - это суббота по григорианскому календарю (принятый в настоящее время календарь), поскольку

Другой пример: судный день 1946 года - четверг, поскольку

Для юлианского календаря:

Формулы применимы также к пролептическому григорианскому календарю и пролептическому юлианскому календарю . Они используют функцию пола и астрономическую нумерацию лет до нашей эры.

Для сравнения см. Расчет числа дней по юлианскому календарю .

400-летний цикл якорных дней [ править ]

Поскольку в григорианском календаре 146097 дней, или ровно 20871 семидневная неделя, в 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-летний цикл [ править ]

Что касается частоты Судных дней в 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 октября (по григорианскому календарю, конец света - воскресенье). Таблица включает годы юлианского календаря, но алгоритм предназначен только для григорианского и пролептического григорианского календаря.

Обратите внимание, что григорианский календарь не был принят одновременно во всех странах, поэтому на протяжении многих веков в разных регионах использовались разные даты для одного и того же дня.

Полные примеры [ править ]

Пример 1 (1985) [ править ]

Предположим, мы хотим узнать день недели 18 сентября 1985 года. Начнем с якорного дня века, среды. К этому добавьте a , b и c выше:

  • а это этаж85/12, что составляет 7.
  • b - 85 mod 12 , то есть 1 .
  • c - полб/4, что равно 0.

Это дает 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 года было средой.)

Пример 2 (другие века) [ править ]

Предположим, мы хотим найти день недели, когда в форте Самтер разразилась гражданская война в США , а это было 12 апреля 1861 года. Днем якоря века был 99 дней после четверга, или, другими словами, пятница (рассчитанная как (18 + 1) × 5 + ⌊18/4 ; или просто посмотрите на диаграмму выше, в которой перечислены якорные дни века). Цифра 61 означала смещение на шесть дней, так что конец света был четвергом. Таким образом, 4 апреля было четвергом, а 12 апреля, восемь дней спустя, стало пятницей.

См. Также [ править ]

  • Порядковая дата
  • Computus - алгоритм Гаусса для вычисления даты Пасхи
  • Сравнение Зеллера - алгоритм (1882 г.) для вычисления дня недели для любой даты в юлианском или григорианском календаре.
  • Мысленный расчет

Ссылки [ править ]

  1. ^ Джон Хортон Конвей, "Завтра - день после Судного Дня" (PDF) . Эврика. Октябрь 1973 г. с. 28-32.
  2. ^ Ричард Гай, Джон Хортон Конвей, Элвин Берлекамп: «Пути победы: для ваших математических пьес, том 2: игры в частности», страницы 795–797, Academic Press, Лондон, 1982, ISBN 0-12-091102-7 . 
  3. ^ Льюис Кэрролл, «Найти день недели для любой заданной даты», Nature , 31 марта 1887 г. doi : 10.1038 / 035517a0
  4. ^ Мартин Гарднер, Вселенная в платке: Математические развлечения, игры, головоломки и пьесы Льюиса Кэрролла , страницы 24–26, Springer-Verlag, 1996.
  5. ^ "Какой день Судный день" . Месяц знаний математики. Апрель 2014 г.
  6. ^ Альперт, Марк. "Not Just Fun and Games", Scientific American , апрель 1999 г. doi : 10.1038 / Scientificamerican0499-40
  7. ^ а б Торренс, Брюс; Торренс, Ева. «Джон Х. Конвей - Судный день, часть 1» . YouTube . Математическая ассоциация Америки . Проверено 14 апреля 2020 .
  8. ^ Limeback, Rudy (3 января 2017). «Алгоритм судного дня» . Проверено 27 мая 2017 года .
  9. ^ a b c Чемберлен Фонг, Майкл К. Уолтерс: «Методы ускорения алгоритма Судного дня Конвея (часть 2)» , 7-й Международный конгресс по промышленной и прикладной математике (2011).
  10. ^ Роберт ван Гент (2017). «Математика календаря ISO 8601» . Утрехтский университет, математический факультет . Проверено 20 июля 2017 года .

Внешние ссылки [ править ]

  • Энциклопедия расчета будних дней, Ганс-Кристиан Солка, 2010 г.
  • Калькулятор судного дня, который также «показывает всю работу»
  • Мировые рекорды по мысленному вычислению дня недели по григорианскому календарю
  • Национальные рекорды по поиску календарных дат
  • Мировой рейтинг дат ментального календаря Memoriad (все соревнования вместе)
  • Какой день недели при любой дате?
  • Алгоритм Судного Дня
  • Поиск дня недели
  • Поэма, объясняющая правило Судного дня в Wayback Machine (архивировано 18 октября 2006 г.)