Определите годы с одинаковыми днями недели (например, 1994, 2005, 2011) - PullRequest
1 голос
/ 22 декабря 2010

У меня есть идея для истории, в которой определенные события происходят многократно в течение года календарных дат, которые идеально соответствуют друг другу, например, 2011, 2005, 1994, можно заменить эти календари друг на друга Я хотел бы быть в состоянии найти календарные годы прошлого и будущего

Если кто-то может мне помочь, пожалуйста, у меня нет возможности программирования Заранее спасибо

Ответы [ 5 ]

3 голосов
/ 22 декабря 2010
2 голосов
/ 22 декабря 2010

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

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

if year modulo 400 is 0
       then is_leap_year
else if year modulo 100 is 0
       then not_leap_year
else if year modulo 4 is 0
       then is_leap_year
else
       not_leap_year

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

Давайте рассмотрим пример.2000 начинается в субботу.2001 год начинается в понедельник, 2 дня спустя, потому что 2000 год високосный.2002 начинается во вторник.2003 в среду.2004 в четверг.2005 в субботу, потому что 2004 год високосный.Из этого мы видим, что 2000 и 2005 годы начинаются в один и тот же день недели, но один - високосный, а другой - нет.Если мы продолжим, мы обнаружим, что 2011 год начинается в субботу, и, следовательно, он идентичен 2005 году.

Мы можем работать в обратном направлении, чтобы найти годы в прошлом, или мы можем просто выбрать более ранний начальный год.

0 голосов
/ 25 ноября 2014

2016 заканчивается в те же дни недели, что и в 1994, 2005 и 2011 годах, но 2016 начинается в пятницу (високосный год), а все остальные годы начинаются в субботу, поэтому нам нужно подождать до 2022 года до дат 2011 года совпадать снова.

0 голосов
/ 23 августа 2014

Будьте осторожны, возвращаясь до 1752 и 1582 годов, когда 11 и 10 дней были исключены из календаря соответственно. см. dataandtime.com. В противном случае есть ровно 14 возможных календарей ... Половина с 29 февраля, половина без. Каждая пара календарей начинается в другой день недели. Там должна быть электронная таблица Excel (ее достаточно легко создать), которая отображает годы с 1752 года в один из 14 столбцов.

0 голосов
/ 22 декабря 2010

Доминая буква B: ... 1910 1921 1927 1938 1949 1955 1966 1977 1983 1994 2005 2011 2022 2033 2039 2050 2061 2067 2078 2089 2095 ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...