[[ProjectEular]]

 -- Problem 18
 
 module Main (main) where
 
 main :: IO ()
 main = do
     triangle_str <- getContents
     print $ problem18 $ to_triangle triangle_str
 
 to_triangle :: String -> [[Int]]
 to_triangle = map (map read . words) . lines
 
 problem18 :: [[Int]] -> Int
 problem18 tri = max_sum tri 0 0
 
 max_sum :: [[Int]] -> Int -> Int -> Int
 max_sum tri i j
     | i+1 == length tri = tri !! i !! j
     | otherwise         = tri !! i !! j + max left right
     where
         left  = max_sum tri (i+1) j
         right = max_sum tri (i+1) (j+1)


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS