19 lines
620 B
Haskell
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
|