作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在 perl 中生成数组的所有 n!
排列的最佳(优雅、简单、高效)方法是什么?
例如,如果我有一个数组@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 "@perm\n";
}
最佳答案
我建议你使用 List::Permutor :
use List::Permutor;
my $permutor = List::Permutor->new( 0, 1, 2);
while ( my @permutation = $permutor->next() ) {
print "@permutation\n";
}
关于perl - 如何在 Perl 中生成数组的所有排列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/635768/
我是一名优秀的程序员,十分优秀!