Tidying
[advent-of-code-22.git] / advent01 / Main.hs
1 -- Writeup at https://work.njae.me.uk/2022/12/01/advent-of-code-2022-day-1/
2
3 import System.Environment
4 import Data.List
5 import Data.List.Split
6 import Data.Ord
7
8 main :: IO ()
9 main =
10 do dataFileName <- getDataFileName
11 numStrs <- readFile dataFileName
12 let calories = fmap (fmap (read @Int)) $ splitWhen null $ lines numStrs
13 print $ part1 calories
14 print $ part2 calories
15
16 getDataFileName :: IO String
17 getDataFileName =
18 do args <- getArgs
19 progName <- getProgName
20 let baseDataName = if null args
21 then progName
22 else head args
23 let dataFileName = "data/" ++ baseDataName ++ ".txt"
24 return dataFileName
25
26 part1 :: [[Int]] -> Int
27 part1 = maximum . fmap sum
28
29 part2 :: [[Int]] -> Int
30 -- part2 = sum . take 3 . reverse . sort . fmap sum
31 part2 = sum . take 3 . sortOn Down . fmap sum
32