easyTree = [[3], [7,4], [2,4,6], [8,5,9,3]] parseToLists :: String -> [[Integer]] parseToLists = map (map read . words) . lines maxPairs :: Ord a => [a] -> [a] maxPairs [x] = [x] maxPairs xs = zipWith max (init xs) (tail xs) nextRow :: Num a => Ord a => [a] -> [a] -> [a] nextRow ls hs = zipWith (+) (maxPairs ls) hs solveTree :: Num a => Ord a => [[a]] -> [a] solveTree xs = foldl nextRow y ys where (y:ys) = reverse xs main = do s <- readFile "67.txt" let l = parseToLists s putStrLn . show . solveTree $ l