Реализации алгоритмов/Алгоритм пасхалии: различия между версиями
Содержимое удалено Содержимое добавлено
ISbot (обсуждение | вклад) м Снятие {{К переименованию}} и добавление {{BookCat}}. |
Oleg4280 (обсуждение | вклад) оформление |
||
Строка 1: | Строка 1: | ||
===== Программная реализация ===== |
|||
{{wikipedia|Пасхалия}} |
{{wikipedia|Пасхалия}} |
||
== [[w:Perl|Perl]] == |
|||
: Rich Bowen’s модуль ''Date::Easter'' доступен на сайте CPAN .<ref>{{cite web|title=Date::Easter|url=http://search.cpan.org/~rbow/Date-Easter-1.14/lib/Date/Easter.pm|publisher=CPAN|archiveurl=http://www.webcitation.org/6FcDSMkSb|archivedate=2013-04-04}}</ref> |
: Rich Bowen’s модуль ''Date::Easter'' доступен на сайте CPAN .<ref>{{cite web|title=Date::Easter|url=http://search.cpan.org/~rbow/Date-Easter-1.14/lib/Date/Easter.pm|publisher=CPAN|archiveurl=http://www.webcitation.org/6FcDSMkSb|archivedate=2013-04-04}}</ref> |
||
== [[w:Excel|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 годов. |
||
== [[w:Python|Python]] == |
|||
* Python |
|||
<syntaxhighlight lang="python"> |
<syntaxhighlight lang="python"> |
||
def IanTaylorEasterJscr(year): |
def IanTaylorEasterJscr(year): |
||
Строка 26: | Строка 23: | ||
</syntaxhighlight><br /> |
</syntaxhighlight><br /> |
||
== [[w:C++|C++]] == |
|||
* C++ |
|||
<syntaxhighlight lang="cpp"> |
<syntaxhighlight lang="cpp"> |
||
class Date |
class Date |
Версия от 18:30, 3 февраля 2015
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.