Problem 8

今日は Problem 8。

cf. Project Euler - Problem 8

 module Main (main) where
 
 
 import Data.List
 import Data.Char
 
 
 euler008 :: [Char] -> Int
 euler008 n = maximum $ map euler008' $ nums n
   where
     nums = filter (\x -> length x > 4) . map (take 5) . tails
     euler008' = foldl1 (*) . map digitToInt
 
 main :: IO ()
 main = do n <- getContents >>= return . concat . lines
           putStrLn $ show $ euler008 n
 ^o^ >runhaskell euler008.hs < euler008.txt
 40824