Math Optimization

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
I'm bad in math, how should I optimize this code?

JASS:
private function GetDumLvlFrmDist takes real dist return integer
if dist <= 200 then
    return 1
elseif dist >200 and dist <= 400 then
    return 2
elseif dist >400 and dist <= 600 then
    return 3
elseif dist >600 and dist <= 800 then
    return 4
elseif dist >800 and dist <= 1000 then
    return 5
elseif dist >1000 and dist <= 1200 then
    return 6
elseif dist >1200 and dist <= 1400 then
    return 7
elseif dist >1400 and dist <= 1600 then
    return 8
elseif dist >1600 and dist <= 1800 then
    return 9
elseif dist >1800 and dist <= 2000 then
    return 10
endif
endfunction
 

AceHart

Your Friendly Neighborhood Admin
Reaction score
1,495
return 1 + R2I(distance) / 200

Not exactly the same though, it excludes the next upper limit.
Though I guess that's not needed anyway.
 

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
Ace, sorry but I can't use yours.

Lets start with an example.
If the dist is 1000.

It should return 5 as shown in my code.
But if it is in your equation, it would return 6.

1 + R2I(1000) / 200
= 1 + 1000 / 200
= 1 +5
= (6)

*Hope I didn't left out something ;)
 

saw792

Is known to say things. That is all.
Reaction score
280
return 1 + R2I(distance - 1) / 200

Problem solved.
 

AceHart

Your Friendly Neighborhood Admin
Reaction score
1,495
> It should return 5 as shown in my code.

No, it shouldn't.
If it did, the distribution wouldn't be uniform anymore as the lowest interval has one more choice than the others.


Though, if you insist:
return (R2I(distance) + 199) / 200
 

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
>>If it did, the distribution wouldn't be uniform anymore as the lowest interval has one more choice than the others.
What does this means?
 

saw792

Is known to say things. That is all.
Reaction score
280
Well, range 0-200 has 201 members, 201-400 has 200, 401-600 had 200, etc.
 

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
>>Well, range 0-200 has 201 members, 201-400 has 200, 401-600 had 200, etc.
Hmm, ok, thanks for the point. I get it now.

But it is impossible for a player to cast spell target with 0 dist from the caster, right?
So, I should put it as, 1 - 200, and not 0 - 200.

For this reason, I simply put if dist <= 200 then without specified the smallest value. ;)
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top