Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re^2: alternatives to if and series of elsif

by kiat (Vicar)
on Jul 03, 2005 at 11:59 UTC ( [id://472014]=note: print w/replies, xml ) Need Help??


in reply to Re: alternatives to if and series of elsif
in thread alternatives to if and series of elsif

Interesting.
return ( $points && min( $Max, $new ) > $quota ) ? $new : $Base;
Your code (assuming $points is true) reduces the conditional test to a test on the min of the $Max or $new against $quota. I'm trying to understand why it's sufficient without also testing for points against some default value:
if ($points > 18000 && $quota < 24) { return 24; }

Replies are listed 'Best First'.
Re^3: alternatives to if and series of elsif
by tlm (Prior) on Jul 03, 2005 at 13:38 UTC

    Because my original version of the algorithm was wrong, that's why! :) I've fixed it. I don't know if it is any clearer. The basic idea is that the tests for points and quota are not independent; they follow the form:

    $points > 2000*X && $quota < 15+X
    for some integer 0 < X < 10. One can eliminate the redundancy between these two tests. Algebraically, the above is equivalent to
    $points/2000 > X && X > $quota-15
    ...which can be further reduced to
    $points/2000 + 15 > $quota
    ...except that there are edge cases (basically, X must be an integer strictly between 0 and 10) which make the algorithm a bit more complex.

    the lowliest monk

      Great thanks, tlm!

      Now I understand how you got rid of $points > 2000. I was wondering how $new > $quota took care of everything.

      I ran gsiems's against your original version and it says "looks ok". Then then I tried to understand how your code works and that got me wondering about $new > $quota being a sufficient test.

      Cheers and thanks once again :)

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://472014]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (5)
As of 2024-04-18 04:26 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found