Пасха — это необычный праздник, поскольку его дата определяется по лунному, а не по обычному календарю.
Из-за этого, определение даты, на которую выпадает Пасха, становится несколько проблематичным. Однажды один из пользователей Excel, Ганс Гербер (Hans Herber) из Германии, на своем Web-узле организовал своеобразное соревнование по созданию формулы вычисления даты Пасхи.
Цель этого состязания состояла в том, чтобы создать самую, насколько это возможно, короткую формулу, которая бы правильно определяла дату Пасхи с 1900 до 2078 года. На рассмотрение было представлено двадцать формул различной длины: от 44 до 154 символов.
Среди этих формул есть такие, которые работают только с европейскими параметрами настройки даты. Ниже приведена самая короткая из всех представленных формул. Ее автор Томас Джансен (Thomas Jansen). Данная формула работает также с любыми параметрами настройки даты.
Формула возвращает дату, на которую выпадает день Пасхи в указанном году (ячейка А1)
Вопрос: Кто может объяснить, как она работает? Мистер Джон Уокенбах не смог :-)
Пасха — это необычный праздник, поскольку его дата определяется по лунному, а не по обычному календарю.
Из-за этого, определение даты, на которую выпадает Пасха, становится несколько проблематичным. Однажды один из пользователей Excel, Ганс Гербер (Hans Herber) из Германии, на своем Web-узле организовал своеобразное соревнование по созданию формулы вычисления даты Пасхи.
Цель этого состязания состояла в том, чтобы создать самую, насколько это возможно, короткую формулу, которая бы правильно определяла дату Пасхи с 1900 до 2078 года. На рассмотрение было представлено двадцать формул различной длины: от 44 до 154 символов.
Среди этих формул есть такие, которые работают только с европейскими параметрами настройки даты. Ниже приведена самая короткая из всех представленных формул. Ее автор Томас Джансен (Thomas Jansen). Данная формула работает также с любыми параметрами настройки даты.
Днную 56 символьную формулу в русской локали можно заменить на идентичную 53 символьную (с учетом знака "=") При этом рузультат получается идентичный (формула получена за счет математического упрощения): [vba]
[/vba] Здесь 4&-A1 - определения 1 апреля нужного года ОСТАТ(19*ОСТАТ(A1;19)-7;30) - операция, связанная с лунным календарем, определение основание луны и т.п. 98% - скорее всего поправочный коэффициент, для подгонки под нужный день календаря За основу взят алгоритм Гаусса вычисления даты Пасхи но сильно упрощенный, и, возможно, данная формула корректно работает только в ограниченном диапазоне дат
Формулы протестировал с 1900 по 9999 годы, результаты обеих формул совпадают между собой
Днную 56 символьную формулу в русской локали можно заменить на идентичную 53 символьную (с учетом знака "=") При этом рузультат получается идентичный (формула получена за счет математического упрощения): [vba]
[/vba] Здесь 4&-A1 - определения 1 апреля нужного года ОСТАТ(19*ОСТАТ(A1;19)-7;30) - операция, связанная с лунным календарем, определение основание луны и т.п. 98% - скорее всего поправочный коэффициент, для подгонки под нужный день календаря За основу взят алгоритм Гаусса вычисления даты Пасхи но сильно упрощенный, и, возможно, данная формула корректно работает только в ограниченном диапазоне дат
Формулы протестировал с 1900 по 9999 годы, результаты обеих формул совпадают между собойMCH
Сообщение отредактировал MCH - Четверг, 15.11.2012, 17:22
т.е. должна быть 44 символьная. Сергей, а как ты посчитал длину или ты просто скопировал текст из книжки?
В данной формуле в русской локали я насчитал 56 символов, даже если отбросить"=" - это 55 Функция ОСТАТ соответствует MOD - убираем 4 символа Функции РУБЛЬ - DOLLAR - плюс 1 итого в английской локали разме формулы должен быть равен 55-4+1 = 52 без учета "=", но никак не 44: =DOLLAR(("4/"&A1)/7+MOD(19*MOD(A1,19)-7,30)*14%,)*7-6
Приведенная мной формула длиной 49 без "=": =MROUND((4&-A1)+MOD(19*MOD(A1,19)-7,30)*98%,7)-6 при этом работает в 2007/2010, в 2003 только с подключенным "пакетом анализа" Не знаю, как будет работать выражение (4&-A1) в других локалях, будет ли оно преобразовываться в дату, но даже если его не трогать, то формула с ОКРУГЛТ на символ короче чем с РУБЛЬ
Странно, что в формуле в качестве округления используется функция РУБЛЬ( ... ;) / DOLLAR( ... ,) В английской локале удебней и короче использовать ТЕКСТ( ... ;0) / TEXT( ... ,0)
Quote (Serge_007)
Ниже приведена самая короткая из всех
Quote (Serge_007)
от 44 до 154 символов
т.е. должна быть 44 символьная. Сергей, а как ты посчитал длину или ты просто скопировал текст из книжки?
В данной формуле в русской локали я насчитал 56 символов, даже если отбросить"=" - это 55 Функция ОСТАТ соответствует MOD - убираем 4 символа Функции РУБЛЬ - DOLLAR - плюс 1 итого в английской локали разме формулы должен быть равен 55-4+1 = 52 без учета "=", но никак не 44: =DOLLAR(("4/"&A1)/7+MOD(19*MOD(A1,19)-7,30)*14%,)*7-6
Приведенная мной формула длиной 49 без "=": =MROUND((4&-A1)+MOD(19*MOD(A1,19)-7,30)*98%,7)-6 при этом работает в 2007/2010, в 2003 только с подключенным "пакетом анализа" Не знаю, как будет работать выражение (4&-A1) в других локалях, будет ли оно преобразовываться в дату, но даже если его не трогать, то формула с ОКРУГЛТ на символ короче чем с РУБЛЬ
Странно, что в формуле в качестве округления используется функция РУБЛЬ( ... ;) / DOLLAR( ... ,) В английской локале удебней и короче использовать ТЕКСТ( ... ;0) / TEXT( ... ,0)MCH
Сообщение отредактировал MCH - Четверг, 15.11.2012, 17:21
Пасха — это необычный праздник, поскольку его дата определяется по лунному, а не по обычному календарю. Из-за этого, определение даты, на которую выпадает Пасха, становится несколько проблематичным.
Обратил внимание, что формулы неправильно определяют дату Пасхи Формулы вычисляют 2012 - 08.04.2012 2013 - 31.03.2013 2014 - 20.04.2014 А по Православному календарю попадают на 2012 - 10.04.2012 2013 - 05.05.2013 2014 - 20.04.2014 Православный календарь Захотелось понять в чем дело. Как определяют день Пасхи. Пасхальное воскресенье - это первое воскресенье после первого полнолуния после весеннего равноденствия. Формула учитывает это правило. А Православную Пасху определяют немного по другому Согласно правилам Первого Вселенского собора (325г. Никея) празднование православной Пасхи совершается в первое воскресение после весеннего полнолуния, которое наступает после или в день весеннего равноденствия, если это воскресение приходится после дня празднования еврейской Пасхи; в противном случае, празднование православной Пасхи переносится на первый воскресный день после дня еврейской Пасхи. Таким образом, день празднования Пасхи оказывается в пределах от 22 марта до 25 апреля старого стиля или от 4 апреля до 8 мая нового стиля.Православная пасхалия Весеннее равноденствие по современным календарям, т.е. по новому стилю, 22 марта, первое полнолуние в 2013 после 22 марта наступает 27 марта, это и по календарям нового стиля. А ближайшее воскресенье 31 марта. Эту дату показывает формула. Смещение из-за еврейской Пасхи может быть только на неделю, так почему в этом году Православную пасху отмечают 5 мая? Мой "Мозговой штурм" ответа не нашел.
Цитата (Serge_007)
Пасха — это необычный праздник, поскольку его дата определяется по лунному, а не по обычному календарю. Из-за этого, определение даты, на которую выпадает Пасха, становится несколько проблематичным.
Обратил внимание, что формулы неправильно определяют дату Пасхи Формулы вычисляют 2012 - 08.04.2012 2013 - 31.03.2013 2014 - 20.04.2014 А по Православному календарю попадают на 2012 - 10.04.2012 2013 - 05.05.2013 2014 - 20.04.2014 Православный календарь Захотелось понять в чем дело. Как определяют день Пасхи. Пасхальное воскресенье - это первое воскресенье после первого полнолуния после весеннего равноденствия. Формула учитывает это правило. А Православную Пасху определяют немного по другому Согласно правилам Первого Вселенского собора (325г. Никея) празднование православной Пасхи совершается в первое воскресение после весеннего полнолуния, которое наступает после или в день весеннего равноденствия, если это воскресение приходится после дня празднования еврейской Пасхи; в противном случае, празднование православной Пасхи переносится на первый воскресный день после дня еврейской Пасхи. Таким образом, день празднования Пасхи оказывается в пределах от 22 марта до 25 апреля старого стиля или от 4 апреля до 8 мая нового стиля.Православная пасхалия Весеннее равноденствие по современным календарям, т.е. по новому стилю, 22 марта, первое полнолуние в 2013 после 22 марта наступает 27 марта, это и по календарям нового стиля. А ближайшее воскресенье 31 марта. Эту дату показывает формула. Смещение из-за еврейской Пасхи может быть только на неделю, так почему в этом году Православную пасху отмечают 5 мая? Мой "Мозговой штурм" ответа не нашел.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.