
Hello everyone! I'm learning Haskell by solving simple exercises on www.hackerrank.com... The problem to be solved: https://www.hackerrank.com/contests/projecteuler/challenges/euler001 as stated in this section: https://www.hackerrank.com/environment constraints version: haskell-plataform 2013.2.0.0 time limit: 5 seconds memory: 512mb I keep getting "timed out" on some test cases (#2 and #3). Trying to process 10^5 numbers between 1 to 10^9 *seems* impossible to me (Please, prove me wrong!) here is my code: import Data.Maybe import qualified Data.ByteString.Char8 as B nearestMultipleOf :: Integral a => a -> a -> a nearestMultipleOf n k = if mod n k == 0 then n else nearestMultipleOf (n-1) k sumMultiplesOf :: Integral a => a -> a -> a sumMultiplesOf n k = foldl (+) 0 [k,k*2..nearest] where nearest = nearestMultipleOf n k solution :: Integral a => a -> a solution n = s03 + s05 - s15 where s03 = sumMultiplesOf (n-1) 3 s05 = sumMultiplesOf (n-1) 5 s15 = sumMultiplesOf (n-1) 15 main = do c <- B.getContents let ns = tail $ B.lines c putStr $ unlines $ map show $ map (solution . fst . fromJust . B.readInt) ns as always, any input is really welcome!