蟻本第2版21ページの問題をHaskellで書く - 🍥shuma_yoshiokaに引き続き、プログラミング学び直し日記。「プログラミングコンテストチャレンジブック 第2版」の23ページより、「Ants」の問題。類似問題はこちら。
プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える?
fMin :: [Int] -> Int -> Int fMin (x:xs) l = maximum [ minimum [x, l-x], (fMin xs l) ] fMin [] _ = minBound fMax :: [Int] -> Int -> Int fMax (x:xs) l = maximum [(l-x), (fMax xs l)] fMax [] _ = minBound main :: IO () main = do l <- (readLn :: IO Int) _ <- (readLn :: IO Int) -- n xs <- (map read . words) <$> getLine :: IO [Int] let r = ( fMin xs l , fMax xs l ) putStrLn $ "min = " ++ show (fst r) ++ "\nmax = " ++ show (snd r)
この回答自体はとてもアッサリで、問題文から導き出す過程が大変。解説文ナシで解く技量はまだ無い。