Unnamed
public text v1 · immutable
print map { "@$_\n" } allperms("a","b","c","d");
exit;
sub allperms() {
my @l = @_;
my $n=$#l;
return \@l if ($n<1);
my @perms = ();
for (my $i=0;$i<=$n;$i++) {
my $c = $l[$i];
my @r = @l[0..($i-1),($i+1)..$n];
push @perms, map { [$c,@$_] } allperms(@r);
}
return @perms;
}