ska*_*tek 4 ruby erlang recursion stack permutation
我想生成列表的所有排列,但我想在将它们添加到堆栈或存储在任何位置之前过滤掉一些排列.
我将根据一些自定义ad-hoc规则过滤出排列.
换句话说,我想生成一个大型列表(50-300个元素)的排列列表,但我想在此过程中抛弃大部分生成的排列(我知道排列的全部数量是N!).
我已经尝试过Ruby Array.permutation.to_a,但看起来它在执行期间保持了完整的堆栈,因此我的内存(8 GB)相当快.
我也尝试过这个 Erlang解决方案,但它似乎与之前的Ruby类似.
这个问题有任何自定义解决方案吗?
Ruby Array.permutation.to_a确实生成了一个数组.不要用的to_a话!它意味着'到阵列'.Array.permutation给你一个'枚举器',一个发生器.既然你想抛弃大多数排列,那么就使用reject它.
res = [1,2,3,4].permutation(3).reject do |perm|
perm.first.even? #if this line is true, the perm will be rejected
end
Run Code Online (Sandbox Code Playgroud)
将生成三个元素的所有排列,并拒绝第一个位置上具有偶数的元素.但是呃......你见过多少300!是什么?
| 归档时间: |
|
| 查看次数: |
1535 次 |
| 最近记录: |