26 lines
701 B
Haskell
26 lines
701 B
Haskell
import Control.Monad
|
|
import Data.Char
|
|
import Data.List
|
|
|
|
parseLine :: String -> [[Int]]
|
|
parseLine line = [parseAssignment $ takeWhile (/= ',') line,
|
|
parseAssignment $ drop 1 $ dropWhile (',' /= ) line]
|
|
|
|
parseAssignment :: String -> [Int]
|
|
parseAssignment assignment = do
|
|
let first = takeWhile ('-' /=) assignment
|
|
let second = drop 1 $ dropWhile ('-' /=) assignment
|
|
[(read first).. (read second)]
|
|
|
|
|
|
|
|
|
|
coveredByPartner :: [[Int]] -> Bool
|
|
coveredByPartner [first,second] = 0 /= (length $ intersect first second)
|
|
|
|
|
|
main = do
|
|
input <- readFile "four-input.txt"
|
|
let lists= (map (parseLine) $ lines input)
|
|
print $ length $ filter id $ map coveredByPartner lists
|