読者です 読者をやめる 読者になる 読者になる

Let's write β

趣味で書いたこととか、RustとLispが好き

Project Euler 67をHaskellで

module Main where

import Data.List.Split

readTriangle :: FilePath -> IO [[Int]]
readTriangle fpath = do
  content <- readFile fpath
  return $ map (map read . splitOn " ") $ lines content

prob67 :: [[Int]] -> Int
prob67 = head . prob67'
  where
    prob67' (x:[]) = zipWith max x (tail x)
    prob67' (x:xs) = let y = prob67' xs;
                         newX = zipWith (+) x y
                     in
                      if (length newX) == 1
                      then newX
                      else zipWith max newX (tail newX) 
     
main = do
  triangle <- readTriangle "triangle.txt"
  print (prob67 triangle)

僕が働いているAzit.incでは一緒に働けるエンジニアを募集しています!
採用情報 — 株式会社アジット|Azit Inc.