math is hard (to remember)
cabney
cabney at cyberpass.net
Fri Jul 13 14:06:09 CDT 2001
~sdpm~
On 12 Jul 2001, Randal L. Schwartz wrote:
> my @list = qw(red orange yellow green blue purple);
> for (my $i = 1; $i < 1 << @list; $i++) {
> my $bits = unpack "B*", pack "N", $i;
> my @out = grep $bits =~ s/(.)$// && $1, @list;
> print "$i = @out\n";
> }
>
> Works up to 32 items. More requires a nicer bit-increment algorithm,
> but when are you going to do this with 32 items or more? :)
while the count is -lt 2**N,
get a string representative of the count's value in binary format.
for each value in @list
knock off the last "bit" from the bit string
if this succeeds (it goes through the /entire/ bitstring?)
the "bit" is the return value for the grep
push out the current @list value if return is "true"
print the count and @out.
If this goes through the whole bitstring, could you get a significant
optimization removing zero's from the high end?
CA
--
There was a time
A wind that blew so young
For this could be the biggest sky
And I could have the faintest idea
~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