2015 Day 17 in Haskell
This commit is contained in:
parent
80b4cc3cff
commit
44166e07ec
34
2015/day17/day17.hs
Normal file
34
2015/day17/day17.hs
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
import Aoc
|
||||||
|
|
||||||
|
numWays :: Int -> [Int] -> Int
|
||||||
|
numWays 0 _ = 1
|
||||||
|
numWays _ [] = 0
|
||||||
|
numWays n (x:xs)
|
||||||
|
| n > 0 = numWays (n-x) xs + numWays n xs
|
||||||
|
| otherwise = 0
|
||||||
|
|
||||||
|
part1 :: [Int] -> Int
|
||||||
|
part1 = numWays 150
|
||||||
|
|
||||||
|
numWays' :: Int -> [Int] -> (Int, Int)
|
||||||
|
numWays' 0 _ = (0, 1)
|
||||||
|
numWays' _ [] = (0, 0)
|
||||||
|
numWays' n (x:xs)
|
||||||
|
| n < 0 = (0, 0)
|
||||||
|
| w1 == 0 = (m0 + 1, w0)
|
||||||
|
| w0 == 0 = (m1, w1)
|
||||||
|
| m0 > m1 -1 = (m1, w1)
|
||||||
|
| m0 == m1 - 1 = (m1, w0 + w1)
|
||||||
|
| m0 < m1 -1 = (m0 + 1, w0)
|
||||||
|
| otherwise = undefined
|
||||||
|
where
|
||||||
|
(m0, w0) = numWays' (n-x) xs
|
||||||
|
(m1, w1) = numWays' n xs
|
||||||
|
|
||||||
|
-- numWays and numWays' can be combined, but I think that that will make it too messy
|
||||||
|
|
||||||
|
part2 :: [Int] -> Int
|
||||||
|
part2 = snd . numWays' 150
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main = aocMain (map read) part1 part2
|
Loading…
Reference in New Issue
Block a user