Reddits алгоритм голосования, версия JavaScript - PullRequest
0 голосов
/ 12 декабря 2011

я пытался написать эту функцию: http://uggedal.com/reddit.cf.algorithm.png в javascript:

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 = время в секундах между первым сообщением и передачей этого сообщения функции u = upvotes d = downvotes

console.log(getRating(50000, 25, 25)); //0

Но всегда возвращается ноль.Я что-то пропустил?Спасибо

Редактировать: обновлено

Ответы [ 2 ]

0 голосов
/ 12 декабря 2011

Для примера ввода результат равен 0, так что это правильно. Возвращает ли он также и для других входов?

Одно, по ссылке нужно установить

z = Math.max(1,Math.abs(x))
0 голосов
/ 12 декабря 2011

Хорошо, в этом случае z будет 1, а log (1) равно 0. Кроме того, "y" будет 0, потому что u == d.

Как упомянуто в комментариях к вопросу, и как ясно из связанного файла .png, вам нужно установить «z» из максимума абсолютного значения «x» и 1. Когда «u» и «d» одинаковы, но в любом случае они всегда будут равны нулю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...