Значение и магические способности. Какой день недели был в день рождения? Значение и магические способности Вечный календарь определения дня недели

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

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

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

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

ВЫЧИСЛЕНИЕ ДНЯ НЕДЕЛИ ПО ДАТЕ

Рассмотрим сначала четыре основных параметра для расчетов.

Возьмем дату — 20.11.1957 года

Годовой индекс рассчитывается таким образом, что две последние цифры года делятся на 12. Например, из года 1957 берется число 57. Это число де­лится на 12, получается 4 и 9 в остатке.

Остаток делится на 4. В нашем при­мере получается остаток 9, который при делении на 4 дает 2 и 1 в остатке, однако здесь остаток не учитывается.

Три полученных числа складываются. Итак, 4 плюс 9 плюс 2, получится 15.

Каждому месяцу присваивается свой индекс, который просто нужно запомнить.

Месяц | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |

———————————————————————————-

Индекс | 6 | 2 | 2 | 5 | 0 | 3 | 5 | 1 | 4 | 6 | 2 | 4 |

Для годов, начинающихся с «одна тысяча девятьсот…» прибавляется + 1

Для годов, начинающихся с «две тысячи…» ничего не прибавляется

Еще есть дополнительное правило для високосных годов, которые можно уз­нать по тому, что две последние цифры года без остатка делятся на 4.

Если исход­ная дата относится к январю или февралю високосного года, тогда из итогового числа необходимо отнять – 1

Рассмотрим несколько конкретных примеров.

1. Вычислим день недели для даты 20.11.1957 года

Сложим все индексы:

Индекс года — 15 (4+9+2)

Индекс месяца – 2

Просто дата – 20

Индекс века — 1

Итак, 15 плюс 2 плюс 20 плюс 1, получится 38.

Результат делится на 7, в нашем случае 38 делить на 7 равно 5 и 3 в ос­татке.

Неделя начинается с понедельника, это число 1, а число 3 соответствует среде.

Итого: 20.11.1957 года – это среда.

2. Вычислим день недели для даты 10.02.1928 года

Сложим все индексы:

Индекс года – 7 (2+4+1)

Индекс месяца – 2

Просто дата – 10

Индекс високосного года – (-1)

Индекс века — 1

Итак, 7 плюс 2 плюс 10 плюс 1 минус 1, получится 19.

Неделя начинается с понедельника, это число 1, а число 5 соответствует пятнице.

Итого: 10.02.1928 года – это пятница.

3. Вычислим день недели для даты 15.06.2012 года

Сложим все индексы:

Индекс года — 1

Индекс месяца – 3

Просто дата – 15

Индекс века — 0

Итак, 15 плюс 3 плюс 1, получится 19.

Результат делится на 7, в нашем случае 19 делить на 7 равно 2 и 5 в ос­татке.

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

Для определения дня недели по дате нужно использовать формулу:

день недели = (день + код месяца + код года) % 7

Пояснения

Код месяца

Коды месяца и года — это, пожалуй, самое трудное в формуле.

Код месяца нужно просто запомнить.

  • 1 — январь, октябрь;
  • 2 — май;
  • 3 — август;
  • 4 — февраль, март, ноябрь;
  • 5 — июнь;
  • 6 — декабрь, сентябрь;
  • 0 — апрель, июль.

Чтобы запоминать подобные нелогичные данные, проще всего прибегать к ассоциациям.

Код года

Код года в XXI веке рассчитывается по формуле:

код года = (6 + последние две цифры года + последние две цифры года / 4) % 7

Оператор «/» означает неполное частное, то есть целую часть результата деления.

  • 2015 год: (6 + 15 + 15 / 4) % 7 = (6 + 15 + 3) % 7 = 25 % 7 = 4;
  • 2016 год: (6 + 16 + 16 / 4) % 7 = (6 + 16 + 4) % 7 = 26 % 7 = 5;
  • 2017 год: (6 + 17 + 17 / 4) % 7 = (6 + 17 + 4) % 7 = 27 % 7 = 6;
  • 2026 год: (6 + 26 + 26 / 4) % 7 = (6 + 26 + 6) % 7 = 38 % 7 = 3.

Если вы захотите узнать день недели для даты другого века, придётся учитывать ещё значения века (6, 4, 2, 0). Вместо 6 для ближайших веков будут следующие значения:

  • 16хх: 6;
  • 17хх: 4;
  • 18хх: 2;
  • 19хх: 0;
  • 20хх: 6;
  • 21хх: 4 и так далее.

Здесь просто: % — оператор остатка при делении.

Расшифровка результата

Старт отсчёта — выходные, то есть: 0 — суббота, 1 — воскресенье и так далее.

Примеры расчёта

  • 25 июля 2016 года: (25 + 0 + 5) % 7 = 30 % 7 = 2 — понедельник;
  • 8 августа 2017 года: (8 + 3 + 6) % 7 = 17 % 7 = 3 — вторник;
  • 5 января 2127 года:
    • (4 + 27 + 27 / 4) % 7 = (4 + 27 + 3) % 7 = 34 % 7 = 6 — код года;
    • (5 + 1 + 6) % 7 = 10 % 7 = 5 — четверг.

Конечно, расчёт дня недели по дате в уме — это не жизненно важный навык в век технологий. Но это нетривиальное упражнение для всех, кто любит развивать свою память и проводить операции с цифрами.

UPD. К сожалению, эта формула не совсем верно работает для високосного года. До 29 февраля включительно к формуле придётся прибавить ещё единицу, чтобы получить верный день. Спасибо читателям, что обнаружили ошибку.

Существует множество способов прокачать мозг. Задачи «n-back» или мобильные приложения для тренировки навыка быстрого счета в уме. Но эти задачи оторваны от текущей реальности, а хотелось бы прокачать мозг практичным навыком.

Зачем? Ведь можно быстро посчитать на гаджете. Увы, совсем не быстро, т.к. потребуется время на поиски и активацию гаджета, поиск приложения, ввод даты, осознание полученного результата. А еще можно друзей/подруг порадовать своими внезапно появившимися экстраординарными способностями. Кстати, друзья быстро осознают удобство использования вечного календаря с голосовым интерфейсом.

Разве это возможно? Как-то раньше обходились без компьютеров. В одной из тв-передач «ищем таланты» показывали натренированного трехлетнего ребенка, который может вычислять произведение трехзначных чисел (пощадите своих детей). Впрочем, взрослые уже не дети и их мозг частично кристаллизован, в смысле слабо обучаем. Значит нужно запоминать как можно меньше и максимально задействовать имеющиеся навыки.

В алгоритмике часто объемы вычислений могут быть скомпенсированы объемами памяти. Т.е. чем больше оперативки доступно, тем меньше потребуется вычислений. Аналогично работает мозг – чем больше мы запомнили, тем быстрее ищем решение. Запомнили несколько формул для сборки кубика Рубика – соберете за пару минут (после длительной тренировки). Запомнили полторы сотни формул – соберете за пару десятков секунд. Мировой рекорд 2013 года – 8.18 сек. Еще раз: чем больше помним – тем быстрее решение.

Алгоритм
Нужно взять смещение (день недели) первого дня года (y) и смещение месяца (m). Затем вычислить сумму y+m+d, где d – день месяца, и найти остаток от деления на 7. Получим номер дня недели.
Что нужно запомнить

Размышления

В целом, достаточно запомнить все дни недели всех 28 лет (периодичность пропорциональна произведению периодов високосных лет и дней недели). Последовательность в 10k. Это довольно много.

Если добавить одну операцию сложения, то будет достаточно запомнить лишь пару рядов чисел:

M(month) = { 6 2 2 5 0 3 5 1 4 6 2 4 }, с января по декабрь

Y(year) = { 6 0 1 2 4 5 6 0 2 3 4 5 0 1 2 3 5 6 0 1 3 4 5 6 1 2 3 4 }, с 1988 по 2015

Смещения для месяца берутся из календаря некоторого года. Смещение месяца равно количеству серых квадратов в начале месяца. Например, не високосный 2006 год. Смещение для этого года будет 0.

Все же запомнить смещения для всех лет и затем выполнять быстрый поиск по индексу довольно сложная когнитивная задача. Есть альтернативный путь – вычислить. Нужно взять две последние цифры года (+100 для XXI века) - Y. Далее найти ближайший прошлый високосный Yв. Взять dY = Y – Yв. Тогда смещение года можно вычислить

Y(Y) = (50 – Yв/2 + dY)

Недостаток формулы в том, что для 2004 и далее смещение будет отрицательным, а для начала и середины XX века двузначными, что слегка затрудняет вычисления в уме. Можно использовать разные формулы для каждого века, в которых учитываются только две младшие цифры года. Например, 12 для 2012г и 1912г.


XX: (50 – Yв/2 + dY) % 7 или (8 – Yв/2 % 7 + dY)
XXI: (7 – Yв/2 % 7 + dY)

В итоге может оказаться проще запомнить таблицу смещений в таком виде:

Смещение для года можно вычислить через сумму смещения ближайшего меньшего високосного года и его разницы с искомым годом. Семь цифр запомнить проще чем 28. К тому же, цифры расположены в убывающем порядке с шагом 2. (Да, да, (0 – 2) будет 5, помним про остаток от деления на 7). Можно запомнить цифры (6, 4, 2, 0, -2, -4, -6), что при вычислениях даст аналогичный результат. Года кратные 20 располагаются в косом квадрате 3х3 по схеме «ход конем» c 2000 годом в центре. Значения смещений месяцев и лет согласованы так, чтобы на 2000 год приходилось смещение 0. А шаг между соседними рядами 28 лет.

Например, для 2014 смещение будет y(2014) = y(2012) + 2 = 1 + 2 = 3. А день программиста 13 сентября 2014 года будет (y(2014) + m(сен) + 13) = (3 + 4 + 13) = 20 => 20 % 7 = 6, т.е. суббота.

Структурируем ряд смещений для месяцев. Значения удобно запоминать по сезонам: весна, лето, осень, зима.

Обратите внимание, что вдруг (?), в порядке сверху вниз и слева направо, цифры выстроились в возрастающий ряд (первая цветная таблица). Можно запоминать только остатки от деления на 7 (вторая цветная таблица) или для восстановления всей таблицы запомнить только разности (последняя таблица). Прибавляя 1 к 1, получим для марта 2, для июня 2+1=3, для сентября 3+1=4 и т.д. Одинаковые значения раскрашены в одинаковые цвета. Для быстрого поиска нам поможет вторая цветная таблица. Помним, что строки - это сезоны, начиная с весны. Это крайне непривычно. Но в древнем Риме год начинался именно с марта. Это отражено в названиях месяцев латинскими цифрами: Septem ber/Octo ber/Novem ber/Decem ber – 7/8/9/10, т.е. февраль был последним 12м месяцем года, к которому добавляли високосный день.

Важно!!! У программистов вечная проблема с потерянной единицей. В нашей задачке без этого не обошлось. Для января и февраля високосного года нужно вычитать единицу.

14 февраля 2012 = (y(2012)+m(фев)+14) - 1 = (1 + 2 +14) - 1 => 16 % 7 = 2, т.е. вторник.

Еще нужно помнить, что не все года что делятся на 4 будут високосными (исключения - 2100, 1900, 1800, ….). Соответственно, необходимо учесть смещение для века. Впрочем, даже если не учитывать последнее исключение можно безошибочно оперировать днями недели за XX и XXI века, что достаточно для большинства житейских случаев.

Немного оптимизации.
Вычисления можно производить в потоковом режиме. Обычно дату рождения (или любую другую дату) сообщают начиная с дня месяца, например, 23 декабря 1913 года. Т.е. в процессе сообщения даты можно частично вычислить искомую сумму 23 + m(дек) = 27 или даже 23 % 7 + m(дек) = 2 + 4 = 6 и затем уже задуматься y(1913) = y(1912) + 1 = 3. В итоге сообщить 30 % 7 = (6 + 3) % 7 = 2, вторник.

Часто приходится оперировать датами текущего года. Т.е. смещение года вы всегда будете помнить, т.к. от частого использования значение «закэшируется». Например, для 2014 смещение равно 3.

Что мы получили. Правила заполнения таблиц простые и вы скорее всего их запомнили и сможете воспроизвести себе шпаргалку в любом месте в любое время. Но для быстрого счета таблицы проще заучить целиком. Ведь мы не восстанавливаем таблицы сложения и умножения для расчета сдачи перед кассой. Эти таблицы «прошиты» еще в начальной школе. Для запоминания таблиц легче всего воспользоваться тренажером Week Brain Calc (Windows Phone).

После непродолжительной тренировки можно порадовать любимых своими уникальными способностями.

Доброго времени суток друзья!

Эту статью я посвятил теме, как определить в Excel день недели по дате. Очень часто с этим вопросом сталкиваются по заработной плате и специалисты отдела кадров, хотя и решений вопросов, когда надо знать припадает ли данное число на рабочий день недели или нет, достаточно много. К этим задачам можно отнести расчёт больничного листа, определения праздничных дней, определения отпускных дней, да и, впрочем, еще много задач где нужно определить в Excel день недели по дате.

Определить день неделиможно несколькими способами и в этой статье мы рассмотрим 3 варианта:

С помощью пользовательского формата

Очень простой способ определить день недели по дате, делается это следующим образом:

  • выделяете , в которых хотите внести изменения в отображении даты;
  • вызываете контекстное меню правой кнопкой мыши и выбираете пункт «Формат ячеек» ;
  • в появившемся окне выбираете вкладку «Число» , в разделе «Числовые форматы» вам нужно выбрать пункт «(все форматы)» и в поле тип внести нужный вам формат даты.

Сами форматы данных можно разделить на 2 типа: полный и сокращенный .

  • Полный формат обозначаеться полным названием дня недели или месяца (к примеру, среда, четверг, и т.д.), полный формат указывается «ДДДД» — для дней недели, «ММММ» — для месяцев.
  • Сокращенный формат отображается только двумя буквами (к примеру, Ср, Чт, Пт, и т.д.) и для этого указывается формат «ДДД» — для дней недели, «МММ» — для месяцев.

С помощью функции ТЕКСТ

В этом случае мы будем использовать встроенную , для того чтобы определить в Excel день недели по дате. Эта функция предназначена, чтобы форматировать число в ячейке и преобразовать его в текст.
Используя эту функцию, вы первым значением указываете источник данных, а потом указываете формат преобразования данных. Формат вы указываете сокращенный или полный , как я описал выше в первом пункте.

Орфография формулы выглядит так:

=ТЕКСТ (А1;«дддд») , формула возвращает текстовое значение дня недели.

С помощью функции ДЕНЬНЕД

Третий вариант узнать день недели по дате, это с помощью функции ДЕНЬНЕД, которая относится к группе «Дата и время» , там вы ее и найдете. Эта функция возвращает число от 1 до 7, что соответствуют дню недели.
Формула выглядит так:

=ДЕНЬНЕД(А1;2) , где:

  • «А1 » – это адрес ячейки где дата в числовом формате,
  • «2 » – это число которое определяет тип возвращаемого значения (существует 3 типа: 1 или отсутствует – возвращает число от 1 (воскресенье) до 7 (суббота), 2 – от 1 (понедельник) до 7 (воскресенье) и 3 – от 0 (понедельник) до 6 (воскресенье), нам привычней всего 2 тип).

Думаю вам станет интересной статья « » в ней вы найдете полезные советы и примеры при работе с датами.

А на этом у меня всё! Я очень надеюсь, что что тема как определить в Excel день недели по дате, была раскрыта и стала вам полезной. Буду очень благодарен за оставленные комментарии, так как это показатель читаемости и вдохновляет на написание новых статей! Делитесь с друзьями прочитанным и ставьте лайк!

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

Расчет смещения столетий (по Григорианскому календарю):

  1. Возьмите первое двукратное число определенного года.
  2. Найдите следующее по величине число кратное 4 после первого двукратного числа.
  3. Вычтите 1 от найденного числа.
  4. Затем от него отнимите первое двукратное число.
  5. Наконец, умножьте полученную величину на 2.

Пример:

Рассчитаем смещение столетий для 1900 века.

Первое двукратное число данной даты — 19.

Следующее по величине число кратное 4 после 19 это 20.

Вычтем 1 от этого числа (20–1).

Теперь отнимем первое двукратное число ((20–1)–19).

Наконец, умножим полученную величину на 2.

1900в = ((20-1)-19)*2 = 0.

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

Расчет смещения месяцев

В одном месяце мы имеем 4 недели, что означает 4×7=28 дней. В январе 31 день. Оставшиеся дни: 31-28=3. Это поможет при расчете числа для каждого месяца.

Вначале обозначим январь как 0.

Февраль = (Количество дней января + оставшиеся дни в январе) / 7) = (31 + 0) / 7 = 3

Март = (количество дней в феврале + оставшиеся дни в феврале) / 7) = (28 + 3) / 7 = 3

Апрель = (Количество дней марта + оставшиеся дни в марте) / 7) = (31 + 3) / 7 = 6

Продолжайте так до декабря … Числа для месяцев:

Таблица смещения месяцев.

Числа дней недели

Необходимо будет запомнить эти таблицы для успешного проведения трюка.

А сейчас давайте же перейдем непосредственно к самому трюку.

Запомните формулу Смещение столетий + Смещение лет + Смещение месяцев + Смещение дней

  • Смещение дней = Полученные дни mod 7
  • Смещение лет = (две последние цифры года +(две последние цифры года/4)) mod 7

Если заданный год является високосным и месяц – Январь или Февраль, тогда смещение лет = (две последние цифры года + (две последние цифры года/4)) mod 7) – 1.

Шаг 1: Спросите любую дату и докажите, что сможете назвать день недели указанной даты.

Шаг 2: Возьмите значение смещения данного столетия с первой таблицы, для 1900 это 0.

Шаг 3: Рассчитайте смещение лет для 86: ((86 + 86/4) mod 7*) = 2

Шаг 4: Возьмите значение смещения месяцев со второй таблицы, для Июня это 4.

Шаг 5: Рассчитайте смещение дней: 23 mod 7* = 2.

Шаг 6: Теперь сложите все 4 числа: 0 + 2 + 4 + 2 = 8.

Шаг 7 : Разделите 8 на 7 = 1.

Согласно таблице чисел дней недели числу 1 соответствует Понедельник.

Следовательно ваш ответ: Понедельник.

* mod 7 — Сравнение по модулю натурального числа 7. В выше приведенном примере 23 mod 7* = 2, то есть 23 — 21 (ближайшее меньшее целое число делимое на 7) = 2. Еще пример (86 + 86/4) mod 7, 86+21 (целое полное число) = 107 — 105 (ближайшее число делимое на 7) = 2

Статьи по теме