2022/01/Main.idr

32 lines
804 B
Idris

import System.File.ReadWrite
import Data.String
import Data.List1
parseInput : String -> List1 (List Int)
parseInput input =
let inputLines = lines input
grouped = split (== "") inputLines
in map (map cast) grouped
part1 : String -> IO ()
part1 input =
let parsed = parseInput input
totals = map (foldr (+) 0) parsed
in do printLn $ foldr max 0 totals
part2 : String -> IO ()
part2 input =
let parsed = parseInput input
totals = map (foldr (+) 0) parsed
sorted = reverse . sort . forget $ totals
main : IO ()
main = do file <- readFile "input"
case file of
Right content =>
do putStr "Part 1: "
part1 content
putStr "Part 2: "
part2 content
Left err => printLn err