Starting with my code from a few days ago, Re^3: Searching for a Permutation Algorithm for nPr where n != r (A::Loops), I only had to make almost trivial changes (update; and then I mostly undid those two changes because I realized from your reply elsewhere that you only wanted certain lengths, not all lengths -- so I added two more changes to make the code more general and demonstrate that):
#!/usr/bin/perl -w use strict; use Algorithm::Loops qw( NestedLoops NextPermute ); my @items= qw( prefix first middle last title ); my $choose= 3; my $iter= NestedLoops( [ [ 0..$#items ], ( sub { [ $_+1 .. $#items ] } ) x ( $choose - 1 ), ], # Uncomment next line if you want all sizes <= $choose # { OnlyWhen => 1 }, ); my @choice; while( @choice= sort @items[$iter->()] ) { do { print "@choice\n"; # replace above line with your code } while( NextPermute(@choice) ); }
Sorry, I don't have access to Perl from here at the moment, so it is untested. Update: Thanks to tkil for testing and other feedback.
- tye
In reply to Re: Permutation seed generator (again)
by tye
in thread Permutation seed generator
by blahblah
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |