in reply to Re: Re: (Golf) Multiply polynomials
in thread (Golf) Multiply polynomials
(Posted at MeowChow's request.)
My best is 77:
Note that this introduces 0's through a fencepost error, but they don't change which polynomial is represented. I think this is fair, but if you think that is cheating, you can not save that character:sub p{ @m=1;for$p(@_){my@t;for$i(0..@m){my$j;$t[$i+$j++]+=$_*$m[$i]for@$p}@m= +@t}[@m] }
The trick lies in finding ways to not work through explicit lookups by index, and in finding ways to not access arrays through references. In fact there is not a single lookup by index of an element in an array reference. (It was cheaper to create and manually increment the index variable.)sub p{ @m=1;for$p(@_){my@t;for$i(0..$#m){my$j;$t[$i+$j++]+=$_*$m[$i]for@$p}@m +=@t}[@m] }
BTW note that the statement of the rules anticipated and forbade saving a character by ending with \@m without making @m a private variable.
Finally at a request from chatter, here is the solution broken out and commented:
sub p{ @m=1; # Start the product at 1. for$p(@_){ # Loop over the polynomials. my@t; # Create a private temp array. for$i(0..@m){ # Loop over the indexes of @m. my$j; # Create the *other* index var. $t[$i+$j++]+= # Manually increment $j while.. # Adding to the index of @t.. $_*$m[$i] # 2 terms multiplied together.. for@$p # for all the terms in the.. } # other polynomial. @m=@t # Make the temp array our new } # product. [@m] # Return our answer in the } # desired form.
UPDATE
Never say you are done, 2 more characters:
sub p{ @m=1;for$p(@_){my@t;for$i(0..@m){$j=$i;$t[$j++]+=$_*$m[$i]for@$p}@m=@t +}[@m] }
UPDATE 2
(This is a couple of days later.) Truly never say never,
there were 2 more wasted characters to 73:
sub p{ @m=1;for$p(@_){$i=my@t;for$,(@m){$j=$i++;$t[$j++]+=$_*$,for@$p}@m=@t}[ +@m] }
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Re: Re: Re: (Golf) Multiply polynomials
by Masem (Monsignor) on May 08, 2001 at 18:14 UTC | |
by tilly (Archbishop) on May 08, 2001 at 18:29 UTC | |
by Masem (Monsignor) on May 08, 2001 at 18:52 UTC | |
by tilly (Archbishop) on May 08, 2001 at 19:27 UTC |
In Section
Meditations