math is hard (to remember)
Randal L. Schwartz
merlyn at stonehenge.com
Thu Jul 12 22:51:27 CDT 2001
~sdpm~
>>>>> "cabney" == cabney <cabney at cyberpass.net> writes:
cabney> ~sdpm~
cabney> Anyone have a more succinct way to do this? Or... faster? I'm no compsci
cabney> guy, but my guess is this is O(NlogN).
cabney> =8<===============================================
cabney> #! /usr/bin/perl -w
cabney> # Finds all the different ways of combining N items, excluding the empty
cabney> # set. So, 2**N - 1 combinations.
Here's one way that involves more recursion than iteration. I've come
up with ways that involve more iteration than recursion too. :)
my @list = qw(red orange yellow green blue);
combo([], @list);
sub combo {
my $base = shift;
if (@_) {
my $first = shift;
combo($base, @_);
combo([@$base, $first], @_);
} else {
print "@$base\n" if @$base; # skip null set
}
}
--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn at stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
~sdpm~
The posting address is: san-diego-pm-list at hfb.pm.org
List requests should be sent to: majordomo at hfb.pm.org
If you ever want to remove yourself from this mailing list,
you can send mail to <majordomo at happyfunball.pm.org> with the following
command in the body of your email message:
unsubscribe san-diego-pm-list
If you ever need to get in contact with the owner of the list,
(if you have trouble unsubscribing, or have questions about the
list itself) send email to <owner-san-diego-pm-list at happyfunball.pm.org> .
This is the general rule for most mailing lists when you need
to contact a human.
More information about the San-Diego-pm
mailing list