parent
a78fe62cc1
commit
3c0400a3ae
4 changed files with 2131 additions and 1 deletions
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,27 @@ |
|||||||
|
module Day6 (day6) where |
||||||
|
|
||||||
|
import Data.List (foldl', intersect) |
||||||
|
import qualified Data.Set as S |
||||||
|
|
||||||
|
separateForms :: [String] -> [[String]] |
||||||
|
separateForms s = let (a, b) = foldl' go ([], []) s in b ++ [a] |
||||||
|
where |
||||||
|
go (l, t) "" = ([], t ++ [l]) |
||||||
|
go (l, t) xs = (l ++ [xs], t) |
||||||
|
|
||||||
|
countYesses :: [String] -> Int |
||||||
|
countYesses = length . S.fromList . concat |
||||||
|
|
||||||
|
countYesses' :: [String] -> Int |
||||||
|
countYesses' = length . foldl' go ['a' .. 'z'] |
||||||
|
where |
||||||
|
go b a = b `intersect` a |
||||||
|
|
||||||
|
day6 :: IO () |
||||||
|
day6 = do |
||||||
|
r <- readFile "./input/day6" |
||||||
|
let m = separateForms . lines $ r |
||||||
|
putStr "[Day 6-1] # yess: " |
||||||
|
print . sum . map countYesses $ m |
||||||
|
putStr "[Day 6-2] # yess: " |
||||||
|
print . sum . map countYesses' $ m |
Loading…
Reference in new issue