--/--/--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2008/10/29

Project Euler: Problem 19

Problem 19

zeller の公式 - wikipediaとやらを使った。そのままだとうまくいかなかったので、ここを参考に、少し改変している。

実行結果

$ runhaskell 19.hs
171

プログラム

 1 zeller y m d = let w = k + (floor $ (double k)/4+
 2                        (floor $ (double j)/4- 2*+
 3                        (floor $ (13*(m'+1))/5+ d
 4                  in w `mod` 7
 5   where (y',m') = if m == 1 || m == 2
 6                     then (y-1,m+12)
 7                     else (y,m)
 8         (j,k)   = divMod y' 100
 9         double :: (Integral a) => a -> Double
10         double  = fromIntegral
11
12 fn = sum $ map year [1901..2000]
13   where year y = length $
14                  filter ((== 1. (\-> zeller y m 1))
15                         [1..12]
16
17 main = print $ fn
スポンサーサイト

comment

post




上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。