in reply to Re: unordered sets of N elements
in thread unordered sets of N elements

Yes, I'd worked on this last night by hand, starting with smaller data sets. I saw the triangular pattern evolving, but wasn't sure where to go with it. Your inductive formula is a big help.
_____________________________________________________
Jeff japhy Pinyan, P.L., P.M., P.O.D, X.S.: Perl, regex, and perl hacker
How can we ever be the sold short or the cheated, we who for every service have long ago been overpaid? ~~ Meister Eckhart

Replies are listed 'Best First'.
Re^3: unordered sets of N elements
by dragonchild (Archbishop) on Jul 13, 2004 at 13:50 UTC
    If you want to solve it recursively, the induction is good. However, I'd use L~R's googled formula with my mod for different number of sides.

    Note - none of the formulas help if you have 2d6+2d8 with the same constraint across all four dice.

    ------
    We are the carpenters and bricklayers of the Information Age.

    Then there are Damian modules.... *sigh* ... that's not about being less-lazy -- that's about being on some really good drugs -- you know, there is no spoon. - flyingmoose

    I shouldn't have to say this, but any code, unless otherwise stated, is untested

      dragonchild,
      That may be where using one of those nifty CPAN modules and sorting/joining/hashing comes into play.
      #!/usr/bin/perl use strict; use warnings; use Algorithm::Loops 'NestedLoops'; my (@combo, %seen); my %roll = ( 'type1' => { 'sides' => 6, 'count' => 2 }, 'type2' => { 'sides' => 8, 'count' => 2 }, ); my $die = 4; my $iter = NestedLoops( [ map { ( [1..$_->{sides}] ) x $_->{count} } values %roll ], { OnlyWhen => \&ok } ); print "@combo\n" while ( @combo = $iter->() ); sub ok { my $key = join '' , sort @_; return undef if exists $seen{$key} || length $key != $die; $seen{$key} = undef; return 1; }

      Cheers - L~R