Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Определение дня Пасхи - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин  
Мир MS Excel » Работа и общение » Мозговой штурм » Определение дня Пасхи
Определение дня Пасхи
Serge_007 Дата: Среда, 14.11.2012, 23:03 | Сообщение № 1
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Пасха — это необычный праздник, поскольку его дата определяется по лунному, а не по обычному календарю.

Из-за этого, определение даты, на которую выпадает Пасха, становится несколько проблематичным. Однажды один из пользователей Excel, Ганс Гербер (Hans Herber) из Германии, на своем Web-узле организовал своеобразное соревнование по созданию формулы вычисления даты Пасхи.

Цель этого состязания состояла в том, чтобы создать самую, насколько это возможно, короткую формулу, которая бы правильно определяла дату Пасхи с 1900 до 2078 года. На рассмотрение было представлено двадцать формул различной длины: от 44 до 154 символов.

Среди этих формул есть такие, которые работают только с европейскими параметрами настройки даты. Ниже приведена самая короткая из всех представленных формул. Ее автор Томас Джансен (Thomas Jansen). Данная формула работает также с любыми параметрами настройки даты.
Code
=РУБЛЬ(("4/"&A1)/7+ОСТАТ(19*ОСТАТ(A1;19)-7;30)*14%;)*7-6

Формула возвращает дату, на которую выпадает день Пасхи в указанном году (ячейка А1)

Вопрос:
Кто может объяснить, как она работает?
Мистер Джон Уокенбах не смог :-)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеПасха — это необычный праздник, поскольку его дата определяется по лунному, а не по обычному календарю.

Из-за этого, определение даты, на которую выпадает Пасха, становится несколько проблематичным. Однажды один из пользователей Excel, Ганс Гербер (Hans Herber) из Германии, на своем Web-узле организовал своеобразное соревнование по созданию формулы вычисления даты Пасхи.

Цель этого состязания состояла в том, чтобы создать самую, насколько это возможно, короткую формулу, которая бы правильно определяла дату Пасхи с 1900 до 2078 года. На рассмотрение было представлено двадцать формул различной длины: от 44 до 154 символов.

Среди этих формул есть такие, которые работают только с европейскими параметрами настройки даты. Ниже приведена самая короткая из всех представленных формул. Ее автор Томас Джансен (Thomas Jansen). Данная формула работает также с любыми параметрами настройки даты.
Code
=РУБЛЬ(("4/"&A1)/7+ОСТАТ(19*ОСТАТ(A1;19)-7;30)*14%;)*7-6

Формула возвращает дату, на которую выпадает день Пасхи в указанном году (ячейка А1)

Вопрос:
Кто может объяснить, как она работает?
Мистер Джон Уокенбах не смог :-)

Автор - Serge_007
Дата добавления - 14.11.2012 в 23:03
MCH Дата: Четверг, 15.11.2012, 11:30 | Сообщение № 2
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

Quote (Serge_007)
Code
=РУБЛЬ(("4/"&A1)/7+ОСТАТ(19*ОСТАТ(A1;19)-7;30)*14%;)*7-6

Днную 56 символьную формулу в русской локали можно заменить на идентичную 53 символьную (с учетом знака "=")
При этом рузультат получается идентичный (формула получена за счет математического упрощения):
[vba]
Code
=ОКРУГЛТ((4&-A1)+ОСТАТ(19*ОСТАТ(A1;19)-7;30)*98%;7)-6
[/vba]
Здесь
4&-A1 - определения 1 апреля нужного года
ОСТАТ(19*ОСТАТ(A1;19)-7;30) - операция, связанная с лунным календарем, определение основание луны и т.п.
98% - скорее всего поправочный коэффициент, для подгонки под нужный день календаря
За основу взят алгоритм Гаусса вычисления даты Пасхи но сильно упрощенный, и, возможно, данная формула корректно работает только в ограниченном диапазоне дат

Формулы протестировал с 1900 по 9999 годы, результаты обеих формул совпадают между собой


Сообщение отредактировал MCH - Четверг, 15.11.2012, 17:22
 
Ответить
Сообщение
Quote (Serge_007)
Code
=РУБЛЬ(("4/"&A1)/7+ОСТАТ(19*ОСТАТ(A1;19)-7;30)*14%;)*7-6

Днную 56 символьную формулу в русской локали можно заменить на идентичную 53 символьную (с учетом знака "=")
При этом рузультат получается идентичный (формула получена за счет математического упрощения):
[vba]
Code
=ОКРУГЛТ((4&-A1)+ОСТАТ(19*ОСТАТ(A1;19)-7;30)*98%;7)-6
[/vba]
Здесь
4&-A1 - определения 1 апреля нужного года
ОСТАТ(19*ОСТАТ(A1;19)-7;30) - операция, связанная с лунным календарем, определение основание луны и т.п.
98% - скорее всего поправочный коэффициент, для подгонки под нужный день календаря
За основу взят алгоритм Гаусса вычисления даты Пасхи но сильно упрощенный, и, возможно, данная формула корректно работает только в ограниченном диапазоне дат

Формулы протестировал с 1900 по 9999 годы, результаты обеих формул совпадают между собой

Автор - MCH
Дата добавления - 15.11.2012 в 11:30
MCH Дата: Четверг, 15.11.2012, 11:56 | Сообщение № 3
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

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 - Четверг, 15.11.2012, 17:21
 
Ответить
Сообщение
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
Дата добавления - 15.11.2012 в 11:56
ZORRO2005 Дата: Четверг, 15.11.2012, 22:23 | Сообщение № 4
Группа: Друзья
Ранг: Обитатель
Сообщений: 382
Репутация: 148 ±
Замечаний: 0% ±

Excel2010
Вроде, как самая короткая 48:
Code
=ОКРВНИЗ(ДЕНЬ(МИНУТЫ(A1/38)/2+56)&"/5/"&A1;7)-34

http://www.contextures.com/exceleastercalculation.html


Сообщение отредактировал ZORRO2005 - Четверг, 15.11.2012, 22:24
 
Ответить
СообщениеВроде, как самая короткая 48:
Code
=ОКРВНИЗ(ДЕНЬ(МИНУТЫ(A1/38)/2+56)&"/5/"&A1;7)-34

http://www.contextures.com/exceleastercalculation.html

Автор - ZORRO2005
Дата добавления - 15.11.2012 в 22:23
MCH Дата: Четверг, 15.11.2012, 23:21 | Сообщение № 5
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

Quote (ZORRO2005)
Вроде, как самая короткая 48

на пару символов можно еще сократить smile
Code
=ОКРВНИЗ(ДЕНЬ(МИНУТЫ(A1/38)/2+56)&-5&-A1;7)-34


Сообщение отредактировал MCH - Четверг, 15.11.2012, 23:22
 
Ответить
Сообщение
Quote (ZORRO2005)
Вроде, как самая короткая 48

на пару символов можно еще сократить smile
Code
=ОКРВНИЗ(ДЕНЬ(МИНУТЫ(A1/38)/2+56)&-5&-A1;7)-34

Автор - MCH
Дата добавления - 15.11.2012 в 23:21
Serge_007 Дата: Воскресенье, 18.11.2012, 01:15 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (MCH)
или ты просто скопировал текст из книжки?

Да, только не из книжки, а с какого-то сайта

Спасибо всем за ответы, но видимо вот до этого:
Quote (MCH)
определение основание луны и т.п.

мне ещё далеко sad


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (MCH)
или ты просто скопировал текст из книжки?

Да, только не из книжки, а с какого-то сайта

Спасибо всем за ответы, но видимо вот до этого:
Quote (MCH)
определение основание луны и т.п.

мне ещё далеко sad

Автор - Serge_007
Дата добавления - 18.11.2012 в 01:15
AlexM Дата: Четверг, 14.02.2013, 08:28 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4509
Репутация: 1128 ±
Замечаний: 0% ±

Excel 2003
Цитата (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 мая?
Мой "Мозговой штурм" ответа не нашел.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение
Цитата (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
Дата добавления - 14.02.2013 в 08:28
Мир MS Excel » Работа и общение » Мозговой штурм » Определение дня Пасхи
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!