day16/haskell: readability improvements
This commit is contained in:
parent
d99efc09fe
commit
deb81d4e12
1 changed files with 4 additions and 4 deletions
|
@ -53,7 +53,7 @@ parseInput = do
|
||||||
return $ Input {fields, myTicket, otherTickets }
|
return $ Input {fields, myTicket, otherTickets }
|
||||||
|
|
||||||
matchesAnyField :: [Field] -> Int -> Bool
|
matchesAnyField :: [Field] -> Int -> Bool
|
||||||
matchesAnyField fields n = any (n `S.member`) . map valids $ fields
|
matchesAnyField fields n = any ((n `S.member`) . valids) fields
|
||||||
|
|
||||||
iterateUntilNothing :: (a -> Maybe a) -> a -> a
|
iterateUntilNothing :: (a -> Maybe a) -> a -> a
|
||||||
iterateUntilNothing f x = maybe x (iterateUntilNothing f) $ f x
|
iterateUntilNothing f x = maybe x (iterateUntilNothing f) $ f x
|
||||||
|
@ -75,10 +75,10 @@ findSingletonChoice (x:xs) =
|
||||||
|
|
||||||
resolve' :: Ord a => [Resolve a] -> Maybe [Resolve a]
|
resolve' :: Ord a => [Resolve a] -> Maybe [Resolve a]
|
||||||
resolve' xs = do
|
resolve' xs = do
|
||||||
(x, xs') <- findSingletonChoice xs
|
(r, xs') <- findSingletonChoice xs
|
||||||
return $ map (dropChoice x) xs'
|
return $ map (dropChoice r) xs'
|
||||||
where dropChoice x (Choice s) = Choice (S.delete x s)
|
where dropChoice x (Choice s) = Choice (S.delete x s)
|
||||||
dropChoice _ r = r
|
dropChoice _ y = y
|
||||||
|
|
||||||
part1 :: Input -> Int
|
part1 :: Input -> Int
|
||||||
part1 Input { fields, otherTickets } = sum . filter (not . matchesAnyField fields) . concat $ otherTickets
|
part1 Input { fields, otherTickets } = sum . filter (not . matchesAnyField fields) . concat $ otherTickets
|
||||||
|
|
Loading…
Reference in a new issue