sub genFixedSubsets { my( $size, @set )= @_; my @idx= reverse 0..$size-1; return sub { return if $size < @idx; my @ret= @set[@idx]; my $i= 0; $i++ until ++$idx[$i] < @set-$i || $size < $i; $idx[$i]= 1+$idx[1+$i] while 0 <= --$i; return @ret; }; } my $gen= genFixedSubsets( $ARGV[0] || 3, 1..($ARGV[1]||5) ); my @subset; while( @subset= $gen->() ) { print "@subset\n"; }
For example:
- tye (but my friends call me "Tye")$ subsets 3 5 3 2 1 4 2 1 5 2 1 4 3 1 5 3 1 5 4 1 4 3 2 5 3 2 5 4 2 5 4 3
In reply to (tye)Re: Combinatorics
by tye
in thread Combinatorics
by ezekiel
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |