def p y g=y%19 f=(g*19+15)%30 c=(y-1500)/100 j=c/25*8+[8,(c%25)/3].min+3 f=(f+y/100-y/400-2-j)%30 if(f==28&&g>=11) f-=1 elsif f>28 f=28 end f+7-(y+y/4-y/100+y/400+30+f)%7 end def c y m=3 d=21+p(y) (m+=1;d-=31)if d>31 puts("#{format"%02d",d} #{m==4?"APRIL":"MARCH"}, #{format"%05d",y}") end 1000.times{|i|c 2001+i}