I wanted the LCD screen on my apartment door to display a message on certain days, such as birthdays, Christmas, and Easter. I didn’t realize how hard it was to calculate which day Easter Sunday is…
def easter(year) c=year/100 n=year-19*(year/19) k=(c-17)/25 i=c-c/4-(c-k)/3+19*n+15 i-=30*(i/30) i-=(i/28)*(1 -(i/28)*(29/(i+1))*((21-n)/11)) j=year+year/4+i+2-c+c/4 j-=7*(j/7) l=i-j month=3+(l+40)/44 day=l+28-31*(month/4) [day, month] end
This happens to be the first Sunday after the Paschal full moon following the northern hemisphere’s vernal equinox.
Christmas, for comparison:
def christmas(year) [25, 12] end