download original
#!/usr/bin/perl -w
use strict;
sub listPerms {
my $size = 1 + $#_;
if ($size <= 1) {
return [@_];
}
else {
my $firstEl = $_[0];
my @subPermRefs = listPerms(@_[1 .. $size-1]);
my @result = ();
foreach my $subPermRef (@subPermRefs) {
for (my $i=0; $i<$size; $i++) {
push @result, [(@{$subPermRef}[0 .. $i-1], $firstEl, @{$subPermRef}[$i .. $size-2])];
}
}
return @result;
}
}
my @permRefs = listPerms(@ARGV);
foreach my $permRef (@permRefs) {
print "@$permRef\n";
}
back to test
(C) 1998-2017 Olaf Klischat <olaf.klischat@gmail.com>