我正在尝试为多米诺骨牌游戏编写一个功能,获得分数(5,3s西部) 但我似乎无法获得正确的语法,但我有一个想法
代码:
type Domino = (Int,Int)
type Line = [Domino]
score :: Line -> Domino
score [] = 0
score line
| (a,b):line = (a+b) + (score line)
我遇到的问题是因为line是一个元组列表我不知道如何表示列表的头部和最后一部分并添加它们
答案 0 :(得分:4)
在对五年级和三年级的多米诺骨牌评分进行了一些微小的研究之后,我想你要在列表中添加第一个元组的第一个组件,并在最后一个元组中添加第二个组件列表(以便[(3,2),(2,6),(6,1),(1,4)]
得分为3 + 4 = 7)。
将其翻译成Haskell很简单:
score [] = 0
score dominoes = fst (head dominoes) + snd (last dominoes)
head
和last
的使用不会在空列表中崩溃,因为我们已经匹配了这种情况。
但是,我可能完全误解了得分规则,而且这并没有注意到双打。