Frage

Dies ist der Hacker News-Ranking-Algorithmus, die ich denke, eine einfache Art und Weise, die Dinge von Ranking, espcially wenn Benutzer Abstimmung über Artikel, aber ich dnt wirklich verstehen, kann dies zu PHP umgewandelt werden, so dass ich es verstehen kann ?

; 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)))))
War es hilfreich?

Lösung

riss direkt von http://amix.dk/blog/post/19574 und übersetzt PHP aus dem Python:

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

Andere Tipps

Es gibt Zuschreibung darüber, wie dieser Algorithmus funktioniert. Eine schnelle Suche entdeckt: Wie Hacker News-Ranking Algorithmus funktioniert

.

Lisp können die Dinge scheinen komplizierter, als sie wirklich sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top