in reply to Golf Soccer Stats

52 inside the sub:
print join "\n",&ss (10,19); sub ss {($p,$o)=@_;$t=$o%3;$w=($o-$t)/3;$l=$p-$t-$w;$w,$l,$t}

Replies are listed 'Best First'.
Re: Re: Golf Soccer Stats
by jynx (Priest) on May 23, 2002 at 19:22 UTC

    For some reason,

    Many people believe that the shortest way to get arguments is either all at once or not at all. Usually i have found this not to be the case. For instance, coupling your statements with your argument pulling i get 46:

    sub ss{ #23456789_123456789_123456789_123456789_123456789_ $l=-($t=$_[1]%3)-($w=(-$t+pop)/3)+pop;$w,$l,$t }
    And if i couple the assignments with the return statement, i can shave off another 8:
    sub ss2{ #23456789_123456789_123456789_123456789_123456789_ $w=(-($t=$_[1]%3)+pop)/3,-$t-$w+pop,$t }
    They seem to test out correctly, but i didn't test all that extensively (engineer's test: if it works 3 times for 3 different input it must work for everything :)

    jynx

    update: it strikes me that i am using a personal definition that i should elaborate on slightly. i think of "pulling arguments" as using pop, shift, or @_ to take an argument out of @_ and assign it to another variable. Not doing so is using $_[$x] directly throughout.