我想以“我的方式”帮助我,因为如果我想知道更好/更多 Haskellic 的方法,我可以用谷歌搜索其他解决方案
现在我得到:
Couldn't match expected type `Int' with actual type `[Int]
这是我的想法,但在某个地方它是错误的。发送累加器时如何处理(我一直在考虑是否在“基本情况”中使用它)
我的想法是我选择其中一个硬币,然后在单独的递归中添加所有其他硬币并查看它是否等于 200,如果是,那么这就是我想要添加到我的结果中,如果更低,将硬币添加到列出例如[100,50]
,然后以相同的方式递归。如果高于 200,则返回 null/empty 或其他。Hand
到目前为止我称之为添加的硬币
module Main where
coins = [100,50,20,10,5,2,1]
euler31 :: Int
euler31 = 1 + length (twoPoundCombinations)
twoPoundCombinations = recursion [] [[]]
recursion :: [Int] -> [[Int]] -> [[Int]],
recursion hand result
| sum hand == 200 = [hand]
| sum hand > 200 = [[]]
| sum hand < 200 = result ++ map (\x -> recursion (x:hand) [[]]) coins