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
答案 0 :(得分:3)
所有看起来都很好。唯一可能是问题的是使用/
运算符。如果两个操作数都是整数(即5/2 = 2
),则此运算符返回整数,但是使用带浮点值的**
始终返回float(即使值为整数,例如9**1.5 = 27.0
),因此您在这里安全
使用/ 60**2
代替/ 60 / 60
也不错。我可能会用:
t = ((Time.now - link.created_at) / 1.hour).round
我认为删除圆形钻头不会有什么坏处。