【发布时间】:2012-01-19 07:53:03
【问题描述】:
注意:这是我之前的排列 question 的“续集”问题。
我想在 Erlang 中生成列表的所有排列,但我想在将某些排列添加到堆栈或存储在任何地方之前过滤掉它们。
我将根据一些自定义的临时规则过滤掉排列(我们称它们为“过滤器”)。
换句话说,我想生成一个大列表(50-300 个元素)的排列列表,但我想在此过程中丢弃大部分生成的排列(我知道完整的数字排列的数量是 N!)。
steenslag 在 Ruby 中给了我一个不错的 solution:
res = [1,2,3,4].permutation(3).reject do |perm|
perm.first.even? #Filter: if this line is true, the perm will be rejected
end
如何在 Erlang 中编写类似的东西?
(我的过滤器函数已经用 Erlang 编写,所以我想做一些代码重用)。
顺便问一下,期望的 Erlang 解决方案可以是“本质上并行的”吗?
【问题讨论】:
标签: recursion erlang stack permutation