Какой лучший (элегантный, простой, эффективный) способ генерации всех перестановок 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 "@perm\n";
}