Code Golf:计算东正教复活节日期

Tok*_*okk 25 language-agnostic code-golf rosetta-stone

挑战

使用最少量的字符计算特定年份(1900-2100)的希腊东正教复活节日期(http://www.timeanddate.com/holidays/us/orthodox-easter-day).

输入只是"2010"形式的一年.它与你得到它(Input,CommandLineArgs等)无关,但它必须是动态的!

输出应该在表格日-月-年(假设dd/mm/yyyyd/m/yyyy)

限制没有标准函数,如Mathematica EasterSundayGreekOrthodox或PHP easter_date(),必须使用自动返回(不适用的格里高利)日期!

例子

2005 returns 1/5/2005
2006 returns 23/4/2006
2007 returns 8/4/2007
2008 returns 27/4/2008
2009 returns 19/4/2009
2010 returns 4/4/2010
2011 returns 24/4/2011
2012 returns 15/4/2012
2013 returns 5/5/2013
2014 returns 20/4/2014
2015 returns 12/4/2015
Run Code Online (Sandbox Code Playgroud)

代码计数包括输入/​​输出(即完整程序).

编辑: 我的意思是东方复活节日期.

参考: http ://en.wikipedia.org/wiki/Computus

Jua*_*uan 9

Python(101 140 132 115个字符)

y=input()
d=(y%19*19+15)%30
e=(y%4*2+y%7*4-d+34)%7+d+127
m=e/31
a=e%31+1+(m>4)
if a>30:a,m=1,5
print a,'/',m,'/',y
Run Code Online (Sandbox Code Playgroud)

这个使用Meeus Julian算法,但由于这个算法仅在1900年到2099年间工作,因此使用Anonymous Gregorian算法的实现正在进行中.

编辑:现在2005正确处理.感谢Mark指出来.

编辑2:更好地处理几年,感谢所有的输入!

编辑3:应该适用于范围内的所有年份.(抱歉劫持胡安.)