Question

Ceci est l'algorithme de classement Nouvelles Hacker, qui je pense est un moyen simple de classement des choses, espcially si les utilisateurs sont le vote sur les articles, mais je vraiment dnt comprendre cela, peut-il être converti en PHP, donc je peux le comprendre pleinement ?

; Votes divided by the age in hours to the gravityth power.
; Would be interesting to scale gravity in a slider.


(= gravity* 1.8 timebase* 120 front-threshold* 1
           nourl-factor* .4 lightweight-factor* .17 gag-factor* .1)

        (def frontpage-rank (s (o scorefn realscore) (o gravity gravity*))
          (* (/ (let base (- (scorefn s) 1)
                  (if (> base 0) (expt base .8) base))
                (expt (/ (+ (item-age s) timebase*) 60) gravity))
             (if (no (in s!type 'story 'poll))  .8
                 (blank s!url)                  nourl-factor*
                 (mem 'bury s!keys)             .001
                                                (* (contro-factor s)
                                                   (if (mem 'gag s!keys)
                                                        gag-factor*
                                                       (lightweight s)
                                                        lightweight-factor*
                                                       1)))))
Était-ce utile?

La solution

Directement arraché à http://amix.dk/blog/post/19574 et traduit PHP du Python:

function calculate_score($votes, $item_hour_age, $gravity=1.8){
    return ($votes - 1) / pow(($item_hour_age+2), $gravity);
}

Autres conseils

Il y a revalorisations sur la façon dont cet algorithme fonctionne. Une recherche rapide a découvert: Comment fonctionne Hacker News algorithme de classement

.

Lisp peut rendre les choses semblent plus compliquées qu'elles ne le sont réellement.

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