diff --git a/day1.hs b/day1.hs index b7e729c..625e6e0 100644 --- a/day1.hs +++ b/day1.hs @@ -1,24 +1,22 @@ import Data.List (sortOn) import Data.Ord (Down (Down)) -import Lib (split) main :: IO () main = do - input <- readFile "day1.in" + input <- lines <$> readFile "day1.in" putStr "Q1: " print $ q1 input putStr "Q2: " print $ q2 input -q1 :: String -> Int +q1 :: [String] -> Int q1 = maximum . calories -q2 :: String -> Int +q2 :: [String] -> Int q2 = sum . take 3 . sortOn Down . calories -calories :: String -> [Int] -calories = - map (sum . map read) - . filter (not . null) - . split "" - . split '\n' +calories :: [String] -> [Int] +calories [] = [] +calories input = + let (cur, rest) = break null input + in sum (map read cur) : calories (drop 1 rest)