rctx

AoC 2022 #01

Dec 1st, 2022 (edited)
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import Data.List (sort)
  2.  
  3. main :: IO ()
  4. main = do
  5.   f1 <- readFile "input01.txt"
  6.   print $ taskOne f1
  7.   print $ taskTwo f1
  8.  
  9. taskOne :: String -> Int
  10. taskOne = maximum . map sum . parseElves
  11.  
  12. taskTwo :: String -> Int
  13. taskTwo = sum . take 3 . reverse . sort . map sum . parseElves
  14.  
  15. parseElves :: String -> [[Int]]
  16. parseElves = parseLine [] [] . lines
  17.   where
  18.     parseLine :: [Int] -> [[Int]] -> [String] -> [[Int]]
  19.     -- end of file reached
  20.     parseLine elve elves [] = elve : elves
  21.     -- blank line
  22.     parseLine elve elves ("" : xs) = parseLine [] (elve : elves) xs
  23.     -- line with number
  24.     parseLine elve elves (line : xs) = parseLine (read line : elve) elves xs
Advertisement
Add Comment
Please, Sign In to add comment