good chemistry is complicated,and a little bit messy -LW PerlMonks

### Re: Re: Re: Re: Re: Re: amount permutations

by the_0ne (Pilgrim)
 on Mar 05, 2004 at 16:36 UTC ( #334276=note: print w/replies, xml ) Need Help??

in reply to Re: Re: Re: Re: Re: amount permutations

Limbic~Region, I work with gr0k and he has to leave for the day, so I'll reply back. I think our example of what we want was fine, but maybe our code confused some people (as you state in your replies). What we are trying to get it is basicly this...

We have...

A=10
B=1
C=6

to be checked. We want to only add up the combinations that are unique. So, what we were ultimately trying to do was generate a list that would give us a way to calculate the unique combinations. Something like this...

A
A B
A B C
A C
B
B C
C

So we'd then run through that list applying our values...

A - 10
A+B - 11
A+B+C - 17
A + C - 16 * matches 16 no need to check C+A, etc..
B - 1
B+C - 7
C - 6

So A+C matches what we want. No need to check C+A. Same with if A+B+C matched what we want. No need to check A+C+B, B+C+A, etc... That was our ultimate goal. Of course A B C could easily be 100 long or even more, but left it small for this post. Hopefully that'll clear some things up. Thanks for all help.
• Comment on Re: Re: Re: Re: Re: Re: amount permutations

Replies are listed 'Best First'.
Re: Re: Re: Re: Re: Re: Re: amount permutations
by Limbic~Region (Chancellor) on Mar 05, 2004 at 16:44 UTC
the_0ne,
I understand that, which is why I said modifying the code would not be difficult to do that. The problem is you seem to want to proceed with using a technique that is producing far more candidates than is necessary. Making a terrible approach more efficient isn't going to make it work.

Cheers - L~R

Update: Even with only pulling unique combinations, it does not take long to get to astronimical numbers as pointed out by kvale earlier. Try out the following code.
```#!/usr/bin/perl
use strict;
use warnings;

my \$k = \$ARGV[0] || 50;
my \$total = 1;

for my \$n ( 1 .. \$k - 1 ) {
if ( \$n > \$k - \$n ) {
\$total += factorial(\$k, \$n + 1) / factorial( \$k - \$n );
}
else {
\$total += factorial(\$k, \$k - \$n + 1) / factorial( \$n );
}
}
print "Total unique combinations for \$k is \$total\n";

sub factorial {
my (\$n, \$max, \$total) = @_;
\$total ||= 1;
\$max   ||= 0;
return \$total if ! \$n || \$n == \$max - 1;
@_ = (\$n - 1, \$max, \$total * \$n);
goto &factorial;
}

Create A New User
Node Status?
node history
Node Type: note [id://334276]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (1)
As of 2018-04-24 03:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
My travels bear the most uncanny semblance to ...

Results (85 votes). Check out past polls.

Notices?