2010-10-20 41 views
8

这是黑客新闻排名算法,我认为这是一种简单的排名方式,特别是如果用户对项目进行投票,但我真的不明白这一点,这可以转换为PHP,所以我可以完全理解它?黑客新闻算法在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))))) 

回答

12

直接从http://amix.dk/blog/post/19574扯下并转化为PHP和Python:

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

感谢你为这个伟大的答案,可以您只需为我解释$ item_hour_age,谢谢,btw +1 upvote form :) :) – getaway 2010-10-20 19:24:58

+0

@getaway - '$ item_hour_age'是您排名以小时计的东西的年龄(自创建以来的时间量) (从0开始) – 2010-10-20 19:26:19

+0

干杯! :))标记你的惊人 – getaway 2010-10-20 19:27:12

6

有这个算法是如何工作的写起坐。快速搜索发现:How Hacker News ranking algorithm works

Lisp可以让事情看起来比实际情况更复杂。

+1

感谢,多数民众赞成在那里我口齿不清从拿到算法笑,欢呼反正+从我给予好评 – getaway 2010-10-20 20:34:31