我在Perl数组中有一个数学集:(1,2,3).我想找到该集合的所有子集:(1),(2),(3),(1,2),(1,3),(2,3).
有3个元素,这不是太难,但如果设置有10个元素,这将变得棘手.
思考?
Joh*_*lla 12
您可以像Matthew提到的那样使用Data :: PowerSet.但是,如果如您的示例中所示,您只需要适当的子集而不是每个子集,则需要做更多的工作.
# result: all subsets, except {68, 22, 43}.
my $values = Data::PowerSet->new({max => 2}, 68, 22, 43);
Run Code Online (Sandbox Code Playgroud)
同样,如果要省略空集,只需添加min参数:
# result: all subsets, except {} and {68, 22, 43}.
my $values = Data::PowerSet->new({min => 1, max => 2}, 68, 22, 43);
Run Code Online (Sandbox Code Playgroud)
否则,要获取所有子集,只需省略两个参数:
# result: every subset.
my $values = Data::PowerSet->new(68, 22, 43);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2996 次 |
| 最近记录: |