Reddits投票算法,javascript版本

时间:2011-12-12 19:12:06

标签: javascript algorithm math

我尝试在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

但它总是返回零。我错过了什么?感谢

编辑:更新

2 个答案:

答案 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))