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