2010-09-29 3 views
2

J'essaie de trouver un système de classement algorithmique simple basé sur python.Algorithme de classement Python avec 30 niveaux

Voici le scénario:

Il y aura 30 niveaux, niveau 1 commence à 0 points. 2000 points sont requis pour atteindre le niveau 30.

Plus de points seront nécessaires que les niveaux progressent. Par exemple, passer du niveau 1 au niveau 2 peut prendre 3 points. Par exemple, pour passer du niveau 1 au niveau 2, il faut 3 points. Les niveaux 2 à 3 peuvent prendre 5 points supplémentaires. Le niveau 29-30 peut prendre 1200 points supplémentaires.

Puisque le score sera calculé à la volée, j'ai aussi besoin d'un moyen de déterminer à quel niveau le joueur se trouve. Par exemple, quel est le niveau d'une personne avec 358 points?

Je pourrais régler les points manuellement, mais le plafond de 2000 points fluctuera de jour en jour, ce qui n'est pas une option idéaliste. Je pensais à quelque chose de similaire au Pagerank de Google (1-10) où il est facile de passer de 0 à 4, mais 9-10 est une tâche très difficile.

Des extraits de code ou des simples?

Merci

Répondre

3

Utilisez une échelle logarithmique. Si vous voulez un exemple de code:

base = 2 # change to change the rate at which you go through the levels 
levels = 30 
finalPoints = 2000 
scale = levels/math.log(finalPoints, base) 
level = math.floor(scale*math.log(points, base)) 
+0

bel exemple. Mon mal de tête est soudainement parti. Je vous remercie! – Louis

3

La solution habituelle consiste à utiliser une échelle logarithmique. Si vous utilisez la base de journal 2, chaque niveau nécessite deux fois plus de points. Si vous utilisez une base de journal 10, chaque niveau nécessite 10 fois les points. De cette façon, vous pouvez "plier" la courbe. See the Wikipedia page pour les maths.

+0

merci pour le conseil. Ma tentative de crash en logarithmes m'a presque tué, je plaisante. Cela m'a rafraîchi la mémoire et m'a amené dans la bonne direction. Merci. – Louis

Questions connexes