如何在Perl中生成数组的所有排列?
发布时间:2020-12-15 21:19:05 所属栏目:大数据 来源:网络整理
导读:什么是最好的(优雅,简单,高效)的方式来产生所有的n!一个数组在perl中的排列? 例如,如果我有一个数组@arr =(0,1,2),我想输出所有排列: 0 1 20 2 11 0 21 2 02 0 12 1 0 它应该是一个返回迭代器的函数(延迟/延迟评估,因为n!可能变得如此不可能大),
什么是最好的(优雅,简单,高效)的方式来产生所有的n!一个数组在perl中的排列?
例如,如果我有一个数组@arr =(0,1,2),我想输出所有排列: 0 1 2 0 2 1 1 0 2 1 2 0 2 0 1 2 1 0 它应该是一个返回迭代器的函数(延迟/延迟评估,因为n!可能变得如此不可能大),所以它可以像这样调用: my @arr = (0,1,2); my $iter = getPermIter(@arr); while (my @perm = $iter->next() ){ print "@permn"; } 解决方法
见
perlfaq4:
“How do I permute N elements of a list?”
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |