import Data.Char (digitToInt) import Data.Maybe (catMaybes) findMax13 numbers = foldl1 max $ map (\i -> subArrayProduct i 13) [0..((length numbers) - 13)] where subArrayProduct start length = product $ take length (drop start numbers) main = do contents <- readFile "input" let max13 = findMax13 $ map digitToInt $ filter (\c -> c >= '0' && c <= '9') contents in putStrLn $ show max13