25 lines
551 B
Haskell
25 lines
551 B
Haskell
module Aoc.Y2020.D06
|
|
( day
|
|
) where
|
|
|
|
import qualified Data.Set as Set
|
|
|
|
import Aoc.Day
|
|
import Aoc.Parse
|
|
|
|
type Group = [String]
|
|
|
|
parser :: Parser [Group]
|
|
parser = sepBy (endBy1 (some lowerChar) newline) newline
|
|
|
|
solver :: [Group] -> IO ()
|
|
solver groups = do
|
|
putStrLn ">> Part 1"
|
|
print $ sum $ map (Set.size . foldr1 Set.union . map Set.fromList) groups
|
|
|
|
putStrLn ""
|
|
putStrLn ">> Part 2"
|
|
print $ sum $ map (Set.size . foldr1 Set.intersection . map Set.fromList) groups
|
|
|
|
day :: Day
|
|
day = dayParse "2020_06" parser solver
|