import Data.List.Split import Data.List main :: IO () main = do input <- parse <$> readFile "input" print $ day4a input print $ day4b input parse :: String -> [[[Int]]] parse = map (map ((\[x,y]->[read x .. read y]) . splitOn "-") . splitOn ",") . lines testEnclave :: [[Int]] -> Bool testEnclave (x:y:[]) = a == x || a == y where a = x `intersect` y day4a :: [[[Int]]] -> Int day4a = sum . map (fromEnum . testEnclave) day4b :: [[[Int]]] -> Int day4b = sum . map (fromEnum . not . null . foldl1 intersect)