关于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/