AdventOfCode/Haskell/2022/04.hs
2023-10-20 13:52:46 +02:00

24 lines
636 B
Haskell

import Lib
import Text.Regex.TDFA
type Assignment = (Int, Int)
type Input = [(Assignment, Assignment)]
main :: IO ()
main = aoc 2022 4 setup solve1 solve2 ["1"]
solve1 :: Input -> Int
solve1 = length . filter (\(a, b) -> contains a b || contains b a)
solve2 :: Input -> Int
solve2 = length . filter (uncurry overlaps)
setup :: String -> Input
setup = map ((\[a, b, c, d] -> ((a, b), (c, d))) . (map read . getAllTextMatches . (=~ "[0-9]+"))) . lines
contains :: Assignment -> Assignment -> Bool
contains (a, b) (c, d) = a <= c && d <= b
overlaps :: Assignment -> Assignment -> Bool
overlaps (a, b) (c, d) = not $ b < c || d < a