Question

Nous avons besoin d'un système de « notation » dans un projet sur lequel nous travaillons, similaire à celui de SO.Cependant, dans le nôtre, il existe plusieurs entités qui doivent être « étiquetées » avec un vote positif (uniquement en hausse, jamais en baisse, comme un incrément).Parfois, nous devrons afficher toutes les entités dans l'ordre de ce qui est le mieux noté, quel que soit le type d'entité, en mélangeant essentiellement les jeux de résultats, je suppose.Quelles structures de données/algorithmes utilisez-vous pour implémenter cela afin qu'il soit flexible et toujours évolutif ?

Était-ce utile?

La solution

Étant donné que l'algorithme de classement de Reddit est génial, il est tout à fait logique d'y jeter un œil, voire de le copier :


Compte tenu de l'heure à laquelle l'entrée a été publiée A et de 7 h 46 min 43 s.8 décembre 2005 B nous avons ts comme leur différence en secondes :

ts = A - B

et x comme la différence entre le nombre de votes positifs U et le nombre de votes négatifs D :

x = U - D

y = 1 if x > 0
y = 0 if x = 0
y = -1 if x < 0

et z comme valeur maximale de la valeur absolue de x et 1 :

z = |x| if |x| >= 1
z = 1 if |x| < 1

on a la notation en fonction ƒ(ts, y, z) :

ƒ(ts, y, z) = journal10 z + (y • ts)/45000


Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top