我正在尝试在Haskell中实现飞镖游戏。我选择在不同层次的列表中代表每条腿的结果。内部列表的每个第一个元素都代表乘数(单,双,三倍),每个第二元素都代表要相乘的点的值。每个玩家的起始得分为501分。这些点数会随着玩家每回合射击的点数而减少。如果玩家达到0分,他将赢得整条腿。
这是一个随机腿的示例,其中起始玩家获胜:
leg1 = [[[3,20],[3,20],[3,20]],[[3,20],[3,19],[2,25]],[[3,19],
[3,19],[3,19]],[[3,20],[3,19],[2,25]],[[2,25],[2,25],[2,25]]]
-- the outer list represents the full leg.
-- the second layer of lists represents a full turn of a player.
-- the inner lists are composed of a pair of two elements
-- and every pair represents one shot.
我的目标是编写一个函数,该函数将随机腿作为输入参数,并对不同的跟踪执行以下操作:
第1阶段:如果起始玩家赢得整条腿,则应该返回1。
阶段2:如果其他玩家获胜,则应该返回2。
第3步:如果内部的组合无效,则应返回0 一对列表元素(例如[3,0]无效,因为三元组0 游戏中不存在)。
示例:
legWinner leg1 -- call of the function with parameter.
-> 1 -- return value.
我不确定如何定义此函数。