Done day 1
[advent-of-code-22.git] / advent01 / Main.hs
diff --git a/advent01/Main.hs b/advent01/Main.hs
new file mode 100644 (file)
index 0000000..5cf7d6a
--- /dev/null
@@ -0,0 +1,30 @@
+-- Writeup at https://work.njae.me.uk/2022/12/01/advent-of-code-2022-day-1/
+
+import System.Environment
+import Data.List
+import Data.List.Split
+
+main :: IO ()
+main = 
+  do  dataFileName <- getDataFileName
+      numStrs <- readFile dataFileName -- "data/advent01.txt"
+      let calories = fmap (fmap (read @Int)) $ splitWhen null $ lines numStrs
+      print $ part1 calories
+      print $ part2 calories
+
+getDataFileName :: IO String
+getDataFileName =
+  do args <- getArgs
+     progName <- getProgName
+     let baseDataName =  if null args
+                         then progName
+                         else head args 
+     let dataFileName = "data/" ++ baseDataName ++ ".txt"
+     return dataFileName
+
+part1 :: [[Int]] -> Int
+part1 = maximum . fmap sum
+
+part2 :: [[Int]] -> Int
+part2 = sum . take 3 . reverse . sort . fmap sum
+