This commit is contained in:
Oskar Winkels 2022-12-07 14:00:49 +01:00
parent bb8075b0c0
commit 9208e5d2b9
Signed by: o.winkels
GPG Key ID: E7484A06E99DAEF1
2 changed files with 32 additions and 1 deletions

View File

@ -1,4 +1,4 @@
DAY = 3 DAY = 4
DIR = day$(DAY) DIR = day$(DAY)

31
day4/main.hs Normal file
View File

@ -0,0 +1,31 @@
import System.IO
import Data.List.Split
parseGrp :: String -> [(Int, Int)]
parseGrp = map ((\ [s,e] -> (read s :: Int,read e :: Int)) . splitOn "-") . splitOn ","
contained :: [(Int, Int)] -> Bool
contained [(s1,e1),(s2,e2)]
| s1 <= s2 && e1 >= e2 = True
| s1 >= s2 && e1 <= e2 = True
| otherwise = False
overlapping :: [(Int, Int)] -> Bool
overlapping [(s1,e1),(s2,e2)]
| e1 < s2 = False
| s1 > e2 = False
| otherwise = True
handler :: String -> String
handler s = (show $ length $ filter contained groups) ++ "\n" ++
(show $ length $ filter overlapping groups) ++ "\n"
where groups = map parseGrp $ lines s
main :: IO ()
main = do
interact handler