Files
advent-of-code-2023/day04/Part1.hs
2023-12-04 19:05:20 +01:00

19 lines
620 B
Haskell

module Part1 where
import Commons
getNWinningNumbers :: [Int] -> [Int] -> Int
getNWinningNumbers _ [] = 0
getNWinningNumbers winningNumbers (n: t) | n `elem` winningNumbers = 1 + getNWinningNumbers winningNumbers t
| otherwise = getNWinningNumbers winningNumbers t
getPoints :: Card -> Int
getPoints card = let nWinningNumbers = getNWinningNumbers (winningNumbers card) $ numbers card
in if nWinningNumbers == 0
then 0
else 2 ^ (nWinningNumbers - 1)
getAllPoints :: [Card] -> [Int]
getAllPoints = map getPoints