zerotrac / leetcode_problem_rating

Self-calculated rating of problems in leetcode weekly/biweekly contests.
MIT License
490 stars 38 forks source link

Is it possible to open source the rating calculation function (not the crawler)? #7

Closed yanrs17 closed 2 years ago

yanrs17 commented 2 years ago

So we can calculate other contests ourselves? (Like 1st-62nd leetcode weekly contests, or other online contests). Thanks!

zerotrac commented 2 years ago

Maybe not now? The backend logic is in a large python file and I may have no time to refactor the code.

zerotrac commented 2 years ago

The calculation function is indeed not that complicated. For a person with rating r and a problem with rating x (it is what we should evaluate), the probability of the person finishing the problem is 1/(1+10^((x-r)/400)) based on Elo rating system. You can guess x by maximizing the likelihood function (i.e. the multiplication of several 1/(1+10^((x-r)/400)) entries and 1 - 1/(1+10^((x-r)/400)) entries).

yanrs17 commented 2 years ago

So is it possible to calculate and add 1st-62nd contest ratings, if not too complicated? (I know they use different APIs.) That is my main reason to ask this. It is a pity this extremely useful website does not show the ratings for those problems. Thanks!

zerotrac commented 2 years ago

It is not complicated to calculate the previous contest, but the results will be completely biased. For the early contests, there are only few participants with very low quality data, so it will affect the credibility of the whole scoreboard. You can randomly click into an early contest and take a look at it, given the fact that in recent contests there are >10000 participants.

Just think of the first contest in which all the participants are of the basic rating 1500, thus all the problems will result in a 1500 rating after calculation. In the code, I filter out the users who have participated in less than 5 contests, because their rating is not converged (thus not accurate).

yanrs17 commented 2 years ago

Thanks!