http://www.colorless-sight.jp/wiki/?ProjectEular%2FProblem19
-- Problem 19 module Main (main) where main :: IO () main = print $ problem19 problem19 :: Int problem19 = length [ (year,month) | year <- [1901..2000], month <- [1..12], isSunday year month 1 ] isSunday :: Int -> Int -> Int -> Bool isSunday year month day = zeller year month day == 1 -- Zeller's congruence -- 0: Saturday, ..., 6: Friday zeller :: Int -> Int -> Int -> Int zeller year month day = mod (q + (div ((m+1)*26) 10) + k + (div k 4) + (div j 4) - (2*j)) 7 where (j,k) = divMod (if month < 3 then year-1 else year) 100 m = if month < 3 then month+12 else month q = day |
最新の20件2023-08-12
2022-12-28
2017-08-15
2014-01-31
2014-01-29
2013-06-04
2012-11-23
2010-08-01
2010-07-24
Tweet
|