From ee17b385c6f3ef54f02921dd89c48df0bb8f541c Mon Sep 17 00:00:00 2001 From: "Yann Esposito (Yogsototh)" Date: Mon, 19 Dec 2011 14:44:40 +0100 Subject: [PATCH] Problem 65, that was easy! --- 065.hs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 065.hs diff --git a/065.hs b/065.hs new file mode 100644 index 0000000..427438a --- /dev/null +++ b/065.hs @@ -0,0 +1,28 @@ +-- What is most surprising is that the important mathematical constant, +-- e = [2; 1,2,1, 1,4,1, 1,6,1 , ... , 1,2k,1, ...]. +-- +-- The first ten terms in the sequence of convergents for e are: +-- 2, 3, 8/3, 11/4, 19/7, 87/32, 106/39, 193/71, 1264/465, 1457/536, ... +-- +-- The sum of digits in the numerator of the 10th convergent is 1+4+5+7=17. +-- +-- Find the sum of digits in the numerator of the 100th convergent of the continued fraction for e. + + +s = 2:rest 1 + where rest k = 1:2*k:1:rest (k+1) + +calc (x:[]) = (x,1) +calc (x:xs) = let + precalc = calc xs + num = fst precalc + den = snd precalc + in + (x * num + den, num) + +sumText :: Integer -> Integer +sumText bignum = sum $ map (\x -> read (x:[]) :: Integer) $ show bignum + +main = do + -- print $ sumText $ fst $ calc $ take 10 s + print $ sumText $ fst $ calc $ take 100 s