Привет, Хабр!
Задумывались ли вы, в какой день недели произошло то или иное событие?
Знали ли, что 9\11 случилось во вторник, а Ю.А. Гагарин покорил космос в среду?
Хотели бы уметь за пару минут высчитывать день недели любой даты?
Предлагаю вашему вниманию перевод статьи How to Perform Calendar Calculations in Your Head автора Jørgen Veisdal, в которой он за научит вас этому за полчаса.
Так называемый календарный савант- это тот, кто, несмотря на свою умственную отсталость (как правило, аутизм), может назвать день недели конкретной даты или наоборот за несколько секунд или даже за десятую долю секунды (Кеннеди&Сквайр, 2007). Примечание: Даниэль П. Кеннеди и Ларри Р Сквайр- ученые, совместно написавшие статью An analysis of calendar performance in two autistic calendar savants .
В приведенном ниже ролике гениальный савант Ким Пик, вдохновитель фильма Человек дождя, делает это, отвечая на вопросы аудитории:
Да, это впечатляет, но, на самом деле, календарные расчеты очень просты в выполнении и могут быть изучены менее чем за 30 минут. Эта короткая статья научит вас, как.
Какой день недели был 13 января 1989 года?
Мой день рождения. Я родился на две недели позже. Вот как вычислить, в какой день недели это было:
Шаг 1. Рассчитайте годовой код Y
Первым из пяти шагов нашего процесса является вычисление кода года, представленного буквой Y.
Возьмите две последние цифры года, разделите на 4, возьмите только целую часть. Моему году рождения соответствует 89 / 4 = 22. Добавьте получившееся число к последним двум цифрам года, 22 + 89 = 111
Для дат в 1700-х годах, добавьте 4.
Для дат в 1800-х годах добавьте 2.
Для дат в 1900-х годах добавьте 0.
Для дат в 2000-х годах добавьте 6.
Для дат в 2100-х годах добавьте 4.
Итак, для даты 13 января 1989 года мы получаем код года Y = 111.
Шаг 2. Найдите код месяца M
Второй шаг наших вычислений — нахождение кода месяца M. Это легко, просто найдите код в таблице ниже (а лучше запомните).
Январь 1
Февраль 4
Март 4
Апрель 0
Май 2
Июнь 5
Июль 0
Август 3
Сентябрь 6
Октябрь 1
Ноябрь 4
Декабрь 6
Если год, для которого вы ищите код, является / был високосным, вычитайте 1 из кода для января и февраля, так вы получите, что январь = 0 и февраль = 3.
Как известно, високосные годы происходят раз в четыре года. Но есть ещё вековые годы, такие как 1900, 2000 и 2100, которые являются високосными, если они делятся без остатка на 400.
Для даты 13 января 1989 года мы получаем код месяца M = 1.
Шаг 3. Найдите код дня D
Третий шаг нашего пятиэтапных вычислений — нахождение кода дня D. Это ещё проще, чем найти код месяца, так как это номер самой даты. Для 13 января 1989 года это число равно D = 13.
Шаг 4. Найдите сумму чисел Y + M + D
Четвертым шагом вычислений является сложение трех чисел, которые мы нашли. Для наших трех чисел сумма равна 111 + 1 + 13 = 125.
Шаг 5. Найдите день недели
Заключительным этапом наших расчетов является вычисление остатка от операции 125 mod 7 по модулю. Мы знаем, что 7 × 17 равно 119, отсюда остается остаток, равный 6.
Суббота 0
Воскресенье 1
Понедельник 2
Вторник 3
Среда 4
Четверг 5
Пятница 6
13 января 1989 года была пятница. Да, я родился в пятницу 13-го.
Эта статья является частью серии рассказов на математические темы, опубликованных в еженедельном издании Cantor`s Paradise. Спасибо за чтение!