day4
This commit is contained in:
parent
bb8075b0c0
commit
9208e5d2b9
|
@ -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
|
Loading…
Reference in New Issue