535fdf45410bf4884cc4103e426c6e25c079b69a
[advent-of-code-21.git] / advent01 / Main.hs
1 import Data.List
2
3 main :: IO ()
4 main =
5 do numStrs <- readFile "data/advent01.txt"
6 let nums = map (read @Int) $ lines numStrs
7 print $ part1 nums
8 print $ part2 nums
9
10 part1 :: [Int] -> Int
11 part1 = countIncreasing
12
13 part2 :: [Int] -> Int
14 part2 nums = countIncreasing $ map sum windows
15 where windows = filter (\w -> length w == 3) $ map (take 3) $ tails nums
16
17 countIncreasing :: [Int] -> Int
18 countIncreasing nums = length $ filter (> 0) $ zipWith (-) (tail nums) nums