Advertisement
Guest User

pseudo_code_gb

a guest
Feb 19th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.42 KB | None | 0 0
  1. totalDailyRuns = getTotalNumber()
  2. reqRuns = totalDailyRuns/3
  3. players = getPlayers()
  4.  
  5. function weighScores(scores)
  6.     for i = 1, #scores -- 1 being most recent
  7.         scores[i] = scores[i] * (log(totalDailyRuns - (i - 1)) / log(totalDailyRuns))
  8.     end
  9.    
  10.     return scores
  11. end
  12.  
  13. function determinePlayerScores()
  14.     for i = 1, #players
  15.         scores = players[i].getScores()
  16.         players[i].weightedScores = weighScores(scores)
  17.     end
  18. end
  19.  
  20. function getTotalScore(weightedScores)
  21.     sum(max(weightedScores, reqRuns)) -- get a sum of maximum 33% of the dailies after weighted scores
  22. end
  23.  
  24. function determineAllTimeLeaderboard()
  25.     totalScores = {}
  26.    
  27.     for i = 1, #players
  28.         totalScore[i].score = getTotalScore(player.weightedScores)
  29.         totalScore[i].player = players[i]
  30.     end
  31.    
  32.     totalScore.sortBy(score)
  33. end
  34.  
  35. -- base algorithm
  36. -- suggested changes
  37. -- normalize each daily score, so max score is 10k (or any other arbitrary number)
  38.  
  39. function normalizedDailyScores()
  40.     for i = 1, #dailies do
  41.         for j = 1, #dailies.scores do
  42.             dailies[i].normalizedDailyScores[j] = (dailies[i].scores[i] / max(dailies[i].scores)) * 10000
  43.         end
  44.     end
  45. end
  46.  
  47. -- don't decrease weight of last few recent dailies
  48.  
  49. function weighScores(scores)
  50.     for i = 1, #scores -- 1 being most recent
  51.         if(i <= 5) then
  52.             scores[i] = scores[i]
  53.         else
  54.             scores[i] = scores[i] * (log(totalDailyRuns - (i - 1 - 5)) / log(totalDailyRuns))
  55.         end
  56.        
  57.     end
  58.    
  59.     return scores
  60. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement