aoc2020/day6.hs
2020-12-06 20:44:58 +13:00

23 lines
596 B
Haskell

import Data.List (nub)
main :: IO ()
main = do
raw <- readFile "day6.txt"
let ls = map concat $ split "" $ lines raw
ms = split "" $ lines raw
ansA = sum $ map (length . nub) ls
ansB = sum $ map (length . (foldr match ['a'..'z'])) ms
in do
putStrLn $ "day6a: " ++ (show ansA)
putStrLn $ "day6b: " ++ (show ansB)
match :: Ord a => [a] -> [a] -> [a]
match as bs = nub $ filter (`elem` bs) as
split :: Eq a => a -> [a] -> [[a]]
split _ [] = []
split d as = chunk : (split d rest)
where
chunk = takeWhile (/= d) as
rest = drop 1 $ dropWhile (/= d) as