嗨,我在总结我的牌时遇到问题,因为 A 可以是 1 或 11。我怎样才能创建一个函数来处理一手牌,即 [Card] 并计算总值?
这是我到目前为止所拥有的:
handValue :: [Card]->[Int]
handValue [] = 0
handValue (x:xs) = sum((val x)++([handValue xs]))
其中 val 已经定义并从卡片返回一个值数组。例如 val ("Ace","Hearts") 给出 [1,11] val ("Five","Hearts") 给出 [5]
任何指针将不胜感激。
编辑:在重复建议后我有这个:
handValue :: [Card]->[Int]
handValue [] = 0
handValue (x:xs) =
if (val x ==[1,11])
then (map sum (sequence [[1,11], handValue xs]))
else [ sum [(val x)]++([handValue xs])]