2014-10-19 150 views
0

我正在嘗試寫一個獲得分數(5,3s西部)的多米諾骨牌遊戲函數,但我似乎無法得到正確的語法,但我有一個想法在元組列表中添加元組

代碼:

type Domino = (Int,Int) 
    type Line = [Domino] 

     score :: Line -> Domino 
     score [] = 0 
     score line 
      | (a,b):line = (a+b) + (score line) 

問題時遇到的,因爲線是元組我不知道如何來表示頭部的名單和最後名單,並將它們添加

+1

首先,如果你想讓'Line'成爲'Domino'列表,你的意思是'輸入Line = [Domino]'。其次,你似乎想要守衛,而不是'分數'中的模式匹配。如果沒有定義合適的'(+)',或者更可能是你想要的,就可以不添加'Domino's,使得'Domino'成爲'Num'的一個實例。還有一個奇怪的落後嚴重口音,會給你帶來麻煩。 – gspr 2014-10-19 20:16:23

+0

對不起,我的錯誤是爲了'type Line = [Domino]' – kazeem 2014-10-19 20:42:58

+2

你可以(也應該)編輯你的帖子。 – 2014-10-19 20:47:08

回答

4

做了微不足道的後位多米諾骨牌得分爲五,三分球的研究,我認爲您想添加列表中第一個元組的第一個元素和列表中最後一個元組的第二個元素(這樣[(3,2),(2,6),(6,1),(1,4)]得分爲3 + 4 = 7)。

翻譯到這個Haskell是直截了當:

score [] = 0 
score dominoes = fst (head dominoes) + snd (last dominoes) 

headlast的使用不會對空列表崩潰,因爲我們已經匹配的話。

雖然這可能是我完全誤解了評分規則,但這並不關注雙打。

+0

太棒了!這確實有助於簡化事情 – kazeem 2014-10-19 21:03:53