我必须做这样的功能:
success :: (Int,Int,Int) -> Int -> (Int,Int,Int) -> Bool
(Int,Int,Int)前三个Ints是属性(表示1到20之间的数字)
中间的Int是比较属性和骰子之间差异的那个。
(Int,Int,Int)最后三个Ints被一个骰子切成小块,每个骰子有20个边。
sucess (attribute 1,attribute 2, attribute 3) -> Compare difference between attributes and dices -> (Dice 1,Dice 2,Dice 3) -> Bool
现在我必须比较属性1和骰子1等等。 如果骰子高于属性,我会注意到差异。 如果低,我要注意0.如果三个差异高于困难,我输了 =>功能是假的
例如:
success (16,13,8) 4 (1,17,10) => false difference is 6
success (16,13,8) 4 (1,10, 9) => true difference is only 1!
我是haskell编程的新手,并且不知道如何处理这个问题。
答案 0 :(得分:1)
这看起来像是一个家庭作业,你应该自己做。所以我会提供一些提示,而不是完整的解决方案。
您可以使用模式匹配来定义该功能:
success (a1, a2, a3) d (d1, d2, d3) = ... -- put condition at here
where diff1 = ...
diff2 = ...
diff3 = ...
我相信你可以很容易地填写遗漏的细节。