你好亲爱的社区,
我想获得列表中偶数位置的所有元素.这是为了实施Dart游戏.
例如 [((3,20),(1,19),(2,17)),((3,20),(2,12),(2,19))] -> [((3,20),(1,19),(2,17))]
到目前为止我尝试过:
positioneven n [] = []
positioneven n (x:xs) = if even n
then (x: positioneven n+1 xs)
else positioneven n+1 xs
Run Code Online (Sandbox Code Playgroud)
但这当然没有用.如果有人能给我一个更好的解决方案,我会很高兴的.
谢谢 !纳扎尔
n. *_* m. 12
一个价格的两个有用功能:
evens (x:xs) = x:odds xs
evens _ = []
odds (_:xs) = evens xs
odds _ = []
Run Code Online (Sandbox Code Playgroud)
我们可以构造一个even_elem :: [a] -> [a]以空列表为基础的函数:
even_elem [] = []
Run Code Online (Sandbox Code Playgroud)
此外,如果我们传递一个包含一个元素的列表,我们将返回包含该元素的列表:
even_elem [x] = [x]
Run Code Online (Sandbox Code Playgroud)
最后,如果我们有一个包含两个或更多元素的列表(x1:x2:t),我们发出第一个元素x1并在尾部执行递归t:
even_elem (x1:_:t) = x1 : even_elem t
Run Code Online (Sandbox Code Playgroud)
或者把它放在一起:
even_elem :: [a] -> [a]
even_elem [] = []
even_elem [x] = [x]
even_elem (x1:_:t) = x1 : even_elem t
Run Code Online (Sandbox Code Playgroud)
如果我们[]通过重新排序模式来假设定义永远不会改变,我们可以简化这个:
even_elem :: [a] -> [a]
even_elem (x1:_:t) = x1 : even_elem t
even_elem l = l
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
350 次 |
| 最近记录: |