permutation by transpositions
public text v1 · immutablemy $n = 4;
my @v = 0..$n-1;
print "@v\n";
permute($n);
sub permute($) {
my $k = shift;
return if $k==1;
for (my $i=0;$i<$k;$i++) {
permute($k-1);
if ($i<$k-1) {
my $t = $v[$k-1];
$v[$k-1] = $v[$k-2];
$v[$k-2] = $t;
print "@v\n";
}
}
}