2014-11-21 70 views
0

我正試圖找出兩個數字之間的值。到目前爲止,我有:計數兩個數字之間的數值haskell

heightbetween :: Float -> Float -> [Float] -> Int 
heightbetween _ _ [] = 0 
heightbetween n s (x:xs) 
| (n < x) : (s > x) = 1 + (heightbetween n s xs) 
| otherwise = heightbetween n s xs 
+4

使用'&&'爲「和」兩個布爾值,而不是':'。另外,'長度。過濾器(\ x - > n chi 2014-11-21 15:06:20

+0

是的我擁有它但是是這樣做的: – caz 2014-11-21 15:21:14

+0

{heightbetween :: Float - > Float - > [Float] - > Int heightbetween _ _ [] = 0 nS(x:xs)之間的高度 | (n < x) && (s > x)= 1 +(n s xs之間的高度) |否則= n之間的高度s xs }我這樣做了,感謝您的幫助。 – caz 2014-11-21 15:40:39

回答

1

你可以高度的名單中篩選之間的上限和下限是斷言,並確定部件中的其餘列表的長度:

filter :: (a -> Bool) -> [a] -> [a] 

的第一個參數允許您查看謂詞是否爲真。例如:

filter ((==) 0) [1, 2, 3, 0, 4, 1, 4, 0, 6, 2, 0] 

將導致列表

[0, 0, 0, 0] 

確定此列表的長度會告訴你有多少元素滿足您的謂語。