Domanda

Questa è l'algoritmo di ranking Hacker News, che credo sia un modo semplice di classifica le cose, espcially se gli utenti sono votazioni sugli articoli, ma davvero dnt capire questo, questo può essere convertito in PHP, così posso capire fino in fondo ?

; 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)))))
È stato utile?

Soluzione

Direttamente strappato dal http://amix.dk/blog/post/19574 e tradotta a PHP dal Python:

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

Altri suggerimenti

Ci sono write-up su come funziona questo algoritmo. Una rapida ricerca ha scoperto: ranking Come Hacker News funziona l'algoritmo

.

Lisp può rendere le cose sembrano più complicate di quello che realmente sono.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top