Doomsday rule: Difference between revisions
Content added Content deleted
Alextretyak (talk | contribs) (Added 11l) |
m (→{{header|Haskell}}: HLint, Ormolu) |
||
Line 556: | Line 556: | ||
instance Show Date where |
instance Show Date where |
||
show Date {year = y, month = m, day = d} = |
|||
printf "%2d/%d/%4d" m d y |
|||
leap :: Int -> Bool |
leap :: Int -> Bool |
||
leap year = |
|||
⚫ | |||
year `mod` 4 == 0 |
|||
⚫ | |||
weekday :: Date -> Int |
weekday :: Date -> Int |
||
weekday |
weekday Date {year = y, month = m, day = d} = |
||
let doom = (s + t + (t `div` 4) + c_anchor) `mod` 7 |
|||
anchor = dooms !! pred m |
|||
c_anchor = (5 * mod c 4 + 2) `mod` 7 |
|||
dooms = |
|||
dooms = (if leap y then [4,1] else [3,7]) ++ [7,4,2,6,4,1,5,3,7,5] |
|||
(if leap y then [4, 1] else [3, 7]) |
|||
<> [7, 4, 2, 6, 4, 1, 5, 3, 7, 5] |
|||
(c, r) = y `divMod` 100 |
|||
(s, t) = r `divMod` 12 |
|||
in (doom + d - anchor + 7) `mod` 7 |
|||
days :: [String] |
days :: [String] |
||
days = words "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" |
days = words "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" |
||
dates :: [Date] |
dates :: [Date] |
||
dates = |
|||
⚫ | |||
[ Date {year = 1800, month = 1, day = 6}, |
|||
Date {year = 1875, month = 3, day = 29}, |
|||
Date {year = 1915, month = 12, day = 7}, |
|||
Date {year = 1970, month = 12, day = 23}, |
|||
Date {year = 2043, month = 5, day = 14}, |
|||
Date {year = 2077, month = 2, day = 12}, |
|||
⚫ | |||
] |
|||
dateAndDay :: Date -> String |
dateAndDay :: Date -> String |
||
Line 586: | Line 594: | ||
main :: IO () |
main :: IO () |
||
main = putStr $ unlines $ map dateAndDay dates |
main = putStr $ unlines $ map dateAndDay dates</lang> |
||
{{out}} |
{{out}} |
||
<pre> 1/ |
<pre> 1/6/1800: Monday |
||
3/29/1875: Monday |
3/29/1875: Monday |
||
12/ |
12/7/1915: Tuesday |
||
12/23/1970: Wednesday |
12/23/1970: Wednesday |
||
5/14/2043: Thursday |
5/14/2043: Thursday |
||
2/12/2077: Friday |
2/12/2077: Friday |
||
4/ |
4/2/2101: Saturday</pre> |
||
=={{header|Java}}== |
=={{header|Java}}== |