From 75fa851ff5bb054d05a86c0a11b2ae085dda54b0 Mon Sep 17 00:00:00 2001 From: Joscha Date: Sun, 6 Dec 2020 10:33:10 +0000 Subject: [PATCH] [hs] Solve 2020_06 --- hs/src/Aoc/Y2020.hs | 2 ++ hs/src/Aoc/Y2020/D06.hs | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 hs/src/Aoc/Y2020/D06.hs diff --git a/hs/src/Aoc/Y2020.hs b/hs/src/Aoc/Y2020.hs index 40ed4de..60fa930 100644 --- a/hs/src/Aoc/Y2020.hs +++ b/hs/src/Aoc/Y2020.hs @@ -8,6 +8,7 @@ import qualified Aoc.Y2020.D02 as D02 import qualified Aoc.Y2020.D03 as D03 import qualified Aoc.Y2020.D04 as D04 import qualified Aoc.Y2020.D05 as D05 +import qualified Aoc.Y2020.D06 as D06 days :: [Day] days = @@ -16,4 +17,5 @@ days = , D03.day , D04.day , D05.day + , D06.day ] diff --git a/hs/src/Aoc/Y2020/D06.hs b/hs/src/Aoc/Y2020/D06.hs new file mode 100644 index 0000000..73dad68 --- /dev/null +++ b/hs/src/Aoc/Y2020/D06.hs @@ -0,0 +1,25 @@ +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