2010-10-20 18 views
8

Ceci est l'algorithme de classement de Hacker News, qui est un moyen simple de classer les choses, surtout si les utilisateurs votent sur des éléments, mais je ne comprends vraiment pas cela, peut-il être converti en PHP?algorithme de nouvelles hacker en php?

; 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))))) 

Répondre

12

directement arraché de http://amix.dk/blog/post/19574 et traduit en PHP Python:

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

merci pour cette excellente réponse, peut vous venez d'expliquer le $ item_hour_age pour moi s'il vous plaît, merci, btw +1 upvote forme moi :)) – getaway

+0

@getaway - '$ item_hour_age' est l'âge (nombre de fois depuis sa création) de la chose que vous êtes le classement en heures (à partir de 0) –

+0

Bravo! :)) @mark votre étonnant – getaway

6

Il existe des descriptions de fonctionnement de cet algorithme. Une recherche rapide a été découverte: How Hacker News ranking algorithm works. Lisp peut rendre les choses plus compliquées qu'elles ne le sont en réalité.

+1

merci, thats où je suis l'algorithme Lisp de lol, acclamations de toute façon + upvote de moi – getaway