簡體   English   中英

Rails中的Hacker News算法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM