[英]Hacker News algorithm in Rails?
HN算法:
(p - 1) / (t + 2)^1.5
哪里:
p = votes of question and first answer
t = age in hours
考慮具有以下字段的鏈接模型:
up_votes
down_votes
created_at
這個實現在Ruby on Rails中正確嗎? 我不確定是否是:
def rank(link)
p = link.up_votes - link.down_votes
t = (Time.now - link.created_at).to_i / 60 / 60
return (p - 1) / (t + 2)**1.5
end
根據您的描述,一切看起來都不錯。 可能唯一的問題是使用/
運算符。 如果兩個操作數都是整數(即5/2 = 2
),則此運算符將返回整數,但是將**
與float值一起使用始終會返回float(即使當值是整數時,例如9**1.5 = 27.0
),因此在這里安全。
同樣,最好使用/ 60**2
代替/ 60 / 60
。 我可能會使用:
t = ((Time.now - link.created_at) / 1.hour).round
我認為去除圓角不會有什么壞處。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.