24 lines
636 B
Haskell
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
|