Another solution...
### Example Usage:
my $Text = "The quick brown fox jumps over the lazy dog";
my @Words = split(/ /, $Text);
printf("%s (%d words)\n", $Text, scalar @Words);
print "-"x100 . "\n";
foreach my $I (1..3) {
my @Results = Combinations($I, @Words);
printf("Found %d combinations of %d words from '%s'\n",
scalar @Results, $I, $Text);
printf(" (%s)\n", join("|", @$_) ) foreach (@Results);
print "-"x100 . "\n";
}
### Actual Useful Part:
sub Combinations {
my $PickSize = shift;
my @Elements = @_;
my @RValue;
my $StopAt = scalar(@Elements) - ($PickSize-1) - 1;
return ([]) if $PickSize == 0;
return ([]) if $PickSize > scalar(@Elements);
for(my $i=0; $i<=$StopAt; $i++) {
my $Element = $Elements[$i];
my @Rest = @Elements;
splice(@Rest, 0, $i+1);
foreach ( Combinations($PickSize-1, @Rest) ) {
my @NewElement = ($Element, @$_);
push(@RValue, \@NewElement );
}
}
return @RValue;
}
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|