我尝试在javascript中编写此函数:http://uggedal.com/reddit.cf.algorithm.png:
function getRating(t,u,d){
var x = u-d;
if(x > 0)
y = 1
else if(x == 0)
y = 0
else if(x < 0)
y = -1
var z = Math.max(1,Math.abs(x));
return Math.log(z)/Math.log(10) + y*t/45000;
}
t =第一篇文章与传递给该函数的帖子之间的时间(以秒为单位) 你= upvotes d = downvotes
console.log(getRating(50000, 25, 25)); //0
但它总是返回零。我错过了什么?感谢
编辑:更新
答案 0 :(得分:0)
在这种情况下,z将为1,log(1)为0.此外,“y”将为0,因为u == d。
正如在问题的评论中所提到的,并且从链接的.png文件中可以清楚地看出,您需要从“x”和1的绝对值的最大值设置“z”。当“u”和“d”是相同的,但无论如何它总是为零。
答案 1 :(得分:0)
对于示例输入,结果为0,因此这是正确的。是否也为其他输入返回0?
有一件事,根据链接,你应该设置
z = Math.max(1,Math.abs(x))