Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re: Creating tuples based on sets

by perlguy (Deacon)
on Apr 16, 2003 at 15:15 UTC ( #250924=note: print w/replies, xml ) Need Help??

in reply to Creating tuples based on sets

Here is my solution. This is not a great example, as I didn't have time to really think this out, but...

use strict; my @set = qw(A B C); mk_tuples(2, 0, \@set, []); # put the number of tuples first print join "\n", map join(' ', @$_), get_tuples(); { my @full_builds; sub mk_tuples { my ($depth, $previous_depth, $set, $built) = @_; push(@full_builds, $built) if $depth == $previous_depth; for my $current_depth ($previous_depth..$depth) { for (@$set) { mk_tuples($depth, $previous_depth+1, $set, [@$built, $_]); } } } sub get_tuples { die "none made\n" unless @full_builds; return @full_builds; } }

Hope that helps.

Update: As you can see, mine requires 4 arguments: 1) the depth to stop at, 2) the depth we are at currently, 3) the full set of possibles to iterate over, and 4) the partial_builds to be passed recursively. I know this isn't exactly what you want... Sorry.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://250924]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (4)
As of 2021-03-03 12:35 GMT
Find Nodes?
    Voting Booth?
    My favorite kind of desktop background is:

    Results (78 votes). Check out past polls.