26 lines
625 B
Haskell
26 lines
625 B
Haskell
import Data.List.Split (splitOn)
|
|
import Data.List (sort)
|
|
|
|
part1 :: [Integer] -> IO ()
|
|
part1 = \x -> putStr "part 1: " >> print (maximum x)
|
|
|
|
part2 :: [Integer] -> IO ()
|
|
part2 = \x -> putStr "part 2: " >> (print $ sum $ take 3 $ reverse $ sort x)
|
|
|
|
rmap :: [a -> b] -> a -> [b]
|
|
rmap xs a = map (\f -> f a) xs
|
|
|
|
main :: IO ()
|
|
main = do
|
|
getContents >>= \x ->
|
|
let b = (map (sum . map read) . splitOn [""] $ lines x) in
|
|
sequence_ $ rmap [part1, part2] b
|
|
|
|
-- -- part 1
|
|
-- putStr "part 1: "
|
|
-- print $ maximum f
|
|
|
|
-- -- part 2
|
|
-- putStr "part 2: "
|
|
-- print $ sum $ take 3 $ reverse $ sort f
|