Doomsday rule: Difference between revisions

add FreeBASIC
m (→‎{{header|Haskell}}: yyyy-mm-dd)
(add FreeBASIC)
Line 486:
M= 2 D= 12 Y= 2077 DAY=FRIDAY
M= 4 D= 2 Y= 2101 DAY=SATURDAY</pre>
 
=={{header|FreeBASIC}}==
<lang>dim shared as ubyte fdoom(0 to 1, 1 to 12) = {_
{ 3, 7, 7, 4, 2, 6, 4, 1, 5, 3, 7, 5 }, _
{ 4, 1, 7, 4, 2, 6, 4, 1, 5, 3, 7, 5 } } 'the first doomsday in
'each month for common
'and leap years
 
dim shared as string*10 days(0 to 6) = {"Sunday", "Monday", "Tuesday", "Wednesday",_
"Thursday", "Friday", "Saturday"}
 
function doomsday(y as uinteger) as ubyte
' John Conway's doomsday formula
return (2 + 5*(y mod 4) + 4*(y mod 100) + 6*(y mod 400)) mod 7
end function
 
function leap(y as uinteger) as ubyte
'is it a leap year?
'return 0 for common years, 1 for leap years
if y mod 4 > 0 then return 0
if y mod 100 = 0 and y mod 400 > 0 then return 0
return 1
end function
 
function get_day(y as uinteger, m as ubyte, d as ubyte) as string
dim as ubyte c = doomsday(y), diff
diff = (7 + d - fdoom( leap(y), m )) mod 7
return days( (c+diff) mod 7 )
end function
 
print get_day( 1800, 01, 06 )
print get_day( 1875, 03, 29 )
print get_day( 1915, 12, 07 )
print get_day( 1970, 12, 23 )
print get_day( 2043, 05, 14 )
print get_day( 2077, 02, 12 )
print get_day( 2101, 04, 02 )</lang>
{{out}}
<pre>Monday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday<pre>
 
=={{header|Go}}==
781

edits