Created
March 30, 2013 13:47
-
-
Save madrobby/5276743 to your computer and use it in GitHub Desktop.
Easter code golfing! Who can make this smaller? Bonus points for fitting it in a tweet. You can use a different algorithm, but it should work for any gregorian date.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// date of easter, call function with the 4-digit year as argument | |
function (a,b,c,d,e,f,g,h,i,j,k,l,m){return b=a%19,c=~~(a/100),d=a%100,e=~~(c/4),f=c%4,g=~~((c+8)/25),h=~~((c-g+1)/3),i=(19*b+c-e-h+15)%30,j=~~(d/4),k=d%4,l=(32+2*f+2*j-i-k)%7,m=~~((b+11*i+22*l)/451),a+"-"+~~((i+l-7*m+114)/31)+"-"+((i+l-7*m+114)%31+1)} | |
// f(2013) -> "2013-3-31" | |
// f(2012) -> "2012-4-8 | |
// f(1775) -> "1775-4-16" |
And here is 191...
function(y,a,b){a=y/100|0;b=(19*(y%19)+a-(a/4|0)-((a-((a+8)/25|0)+1)/3|0)+15)%30;a=(32+2*(a%4)+2*(y%100/4|0)-b-y%100%4)%7;a=b+a-7*((y%19+11*b+22*a)/451|0)+114;return ''+y+(-a/31|0)+(-a%31-1)}
Fiddle: http://jsfiddle.net/A8caW/
142 characters, based on a different algorithm (taken from http://www.merlyn.demon.co.uk/estralgs.txt)
function(y){var a=y/100|0,b=a>>2,c=(y%19*351-~(b+a*29.32+13.54)*31.9)/33%29|0,d=56-c-~(a-b+c-24-y/.8)%7;return[y,3+d/32|0,d%31||31].join('-')}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Take that back, guess I missed something. Here's 194. :)
Fiddle: http://jsfiddle.net/uAKZH/