Реализации алгоритмов/Алгоритм пасхалии: различия между версиями
Содержимое удалено Содержимое добавлено
Нет описания правки |
→К переименованию: Использован шаблон. |
||
Строка 1: | Строка 1: | ||
{{К переименованию | 2014-05-02 | Реализации алгоритмов/Алгоритм пасхалии}} |
|||
===== Программная реализация ===== |
===== Программная реализация ===== |
||
{{wikipedia|Пасхалия}} |
{{wikipedia|Пасхалия}} |
||
Строка 5: | Строка 7: | ||
* Excel |
* Excel |
||
=DOLLAR(("4/"&A1)/7+MOD(19*MOD(A1,19)-7,30)*14%,)*7-6 |
=DOLLAR(("4/"&A1)/7+MOD(19*MOD(A1,19)-7,30)*14%,)*7-6 |
||
: Предполагается, что ячейка A1 содержит год.<ref>{{cite web|last=Walkenbach|first=John|title=Calculating Easter|url=http://spreadsheetpage.com/index.php/tip/calculating_easter/|archiveurl=http://www.webcitation.org/6FcDT117e|archivedate=2013-04-04}}</ref> Формула вычисляет дату католической Пасхи и дает верный результат для 1900—2203 годов. |
: Предполагается, что ячейка A1 содержит год.<ref>{{cite web|last=Walkenbach|first=John|title=Calculating Easter|url=http://spreadsheetpage.com/index.php/tip/calculating_easter/|archiveurl=http://www.webcitation.org/6FcDT117e|archivedate=2013-04-04}}</ref> Формула вычисляет дату католической Пасхи и дает верный результат для 1900—2203 годов. |
||
Строка 62: | Строка 64: | ||
easterDate.year = year; |
easterDate.year = year; |
||
return easterDate; |
return easterDate; |
||
} |
} |
||
Строка 83: | Строка 85: | ||
easterDate.year = year; |
easterDate.year = year; |
||
return easterDate; |
return easterDate; |
||
} |
} |
||
</syntaxhighlight> |
</syntaxhighlight> |
Версия от 19:35, 2 мая 2014
Программная реализация
- Perl
- Rich Bowen’s модуль Date::Easter доступен на сайте CPAN .[1]
- Excel
=DOLLAR(("4/"&A1)/7+MOD(19*MOD(A1,19)-7,30)*14%,)*7-6
- Предполагается, что ячейка A1 содержит год.[2] Формула вычисляет дату католической Пасхи и дает верный результат для 1900—2203 годов.
- Python
def IanTaylorEasterJscr(year):
a = year % 19
b = year >> 2
c = b // 25 + 1
d = (c * 3) >> 2
e = ((a * 19) - ((c * 8 + 5) // 25) + d + 15) % 30
e += (29578 - a - e * 32) >> 10
e -= ((year % 7) + b - d + e + 2) % 7
d = e >> 5
day = e - d * 31
month = d + 3
return year, month, day
- C++
class Date
{
public:
int day;
int month;
int year;
};
// возвращает дату григорианского календаря
// по книге Jean Meeus Astronomical Algorithms
Date CatholicEaster( int year )
{
Date easterDate;
int a = year % 19;
int b = year / 100;
int c = year % 100;
int d = b / 4;
int e = b % 4;
int f = (b + 8) / 25;
int g = (b - f + 1) / 3;
int h = (19 * a + b - d - g + 15) % 30;
int i = c / 4;
int k = c % 4;
int l = (32 + 2 * e + 2 * i - h - k) % 7;
int m = (a + 11 * h + 22 * l) / 451;
int month = (h + l - 7 * m + 114) / 31;
int day = ((h + l - 7 * m + 114) % 31) + 1;
easterDate.day = day;
easterDate.month = month;
easterDate.year = year;
return easterDate;
}
// возвращает дату юлианского календаря
// по книге Jean Meeus Astronomical Algorithms
Date OrthodoxEaster( int year )
{
Date easterDate;
int a = year % 4;
int b = year % 7;
int c = year % 19;
int d = (19 * c + 15) % 30;
int e = (2 * a + 4 * b - d + 34) % 7;
int month = (d + e + 114) / 31;
int day = ((d + e + 114) % 31) + 1;
easterDate.day = day;
easterDate.month = month;
easterDate.year = year;
return easterDate;
}
Примечания
- ↑ Date::Easter. CPAN. Архивировано из первоисточника 4 апреля 2013.
- ↑ Walkenbach, John Calculating Easter Архивировано из первоисточника 4 апреля 2013.