|
|
| There's more than one way to do things | |
| PerlMonks |
How do I permute N elements of a list?by faq_monk (Initiate) |
| on Oct 08, 1999 at 00:20 UTC ( #618=perlfaq nodetype: print w/ replies, xml ) | Need Help?? |
|
Current Perl documentation can be found at perldoc.perl.org. Here is our local, out-dated (pre-5.6) version:
Here's a little program that generates all permutations of all the words on each line of input. The algorithm embodied in the
#!/usr/bin/perl -n
# tsc-permute: permute each word of input
permute([split], []);
sub permute {
my @items = @{ $_[0] };
my @perms = @{ $_[1] };
unless (@items) {
print "@perms\n";
} else {
my(@newitems,@newperms,$i);
foreach $i (0 .. $#items) {
@newitems = @items;
@newperms = @perms;
unshift(@newperms, splice(@newitems, $i, 1));
permute([@newitems], [@newperms]);
}
}
}
|
|