list - F#中元素的最优雅组合

标签 list f# functional-programming combinations simplify

关于F#中元素组合最优雅,最简单的实现的另一个问题。

它应该返回输入元素的所有组合(列表或序列)。
第一个参数是组合中元素的数量。

例如:

comb 2 [1;2;2;3];;
[[1;2]; [1;2]; [1;3]; [2;2]; [2;3]; [2;3]]

最佳答案

一个比ssp更简洁,更快速的解决方案:

let rec comb n l = 
    match n, l with
    | 0, _ -> [[]]
    | _, [] -> []
    | k, (x::xs) -> List.map ((@) [x]) (comb (k-1) xs) @ comb k xs

关于list - F#中元素的最优雅组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1222185/

相关文章:

c# - 如何将列表参数添加到 LINQ 查询?

python - 如何使用 selenium 和 python 创建具有相同 xpath 的元素列表?

f# - 进行赋值时是否可以在 F# 中强制记录类型?

haskell - 将 Haskell (monadic) 翻译成 F#

scala - 如何使这段代码更实用?

c# - 根据第一个索引值对二维列表进行排序

javascript - jQuery .on ("click") 异常事件

object - F# 中的内联 C# 对象创建

javascript - 给定一个元素和一个列表,如何在功能上选择列表中后面的元素?

java - Java中的函数式编程