2010-10-20 9 views
8

Este es el algoritmo de clasificación de Hacker News, que creo que es una manera simple de clasificar cosas, especialmente si los usuarios votan sobre artículos, pero realmente no entiendo esto, ¿se puede convertir esto a PHP, así que puedo entenderlo completamente?algoritmo de noticias 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))))) 

Respuesta

12

directamente rasgado de http://amix.dk/blog/post/19574 y traducidos a PHP desde la Python:

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

gracias por esta gran respuesta, pueden usted solo explica el $ item_hour_age para mí, por favor, gracias, por cierto +1 upvote form me :)) – getaway

+0

@getaway - '$ item_hour_age' es la edad (cantidad de tiempo desde que se creó) de lo que está ranking contado en horas (comenzando en 0) –

+0

¡salud! :)) marque su sorprendente – getaway

6

Hay informes sobre cómo funciona este algoritmo. Una búsqueda rápida descubierta: How Hacker News ranking algorithm works.

Lisp puede hacer que las cosas parezcan más complicadas de lo que realmente son.

+1

gracias, que es donde me dieron el algoritmo en Lisp del lol, aplausos de todos modos + upvote de mí – getaway

Cuestiones relacionadas