小编Met*_*iwi的帖子

按位置删除各种元素

我正在为课堂做一个练习,经过一段时间的思考,我找到了理论上的方法,但无法弄清楚在 Haskell 中的方法。
练习是:

xs有一个包含不同元素的列表n。从到的n列表元素的组合(与)是可以从原始元素形成的所有可能的元素集(没有重复) 。xsmmm <= nmn

元素的顺序并不重要(这意味着"abc"被视为与 相同的组合"bca")。

例如:

comb 0 "abcd" -> [""]
comb 3 "bcd" -> ["bcd"]
comb 2 "bcd" -> ["cd","bd","bc"]
comb 3 "abcd" -> ["bcd", "acd", "abd", "abc"]
Run Code Online (Sandbox Code Playgroud)

定义一个函数comb,该函数接受一个自然数和一个包含不同元素的m列表。xsn

我能找到的唯一方法是我需要一个值来表示我的“位置指针” pp,这样它将删除length xs - m该指针之后的元素,然后在递归调用中删除元素m + pp,因此它“跳转”到下一个位置。我将以一种伪 Haskell 方式编写一个示例:

m = 3   xs = "abcd"   * = pp

*abcd …
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming

1
推荐指数
1
解决办法
78
查看次数

标签 统计

functional-programming ×1

haskell ×1