gpt4 book ai didi

perl - 如何在 Perl 中生成数组的所有排列?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:18:05 30 4
gpt4 key购买 nike

在 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com