zerotrac / leetcode_problem_rating

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

Take a look at this issue if you come up with more features #15

Open zerotrac opened 2 years ago

zerotrac commented 2 years ago

The aim of this whole project is to:

If you would like to use the data to customize your own LeetCod-ing plan (e.g. solving problems that have rating ~200 more than your current rating), you can just use the ratings.txt file. It is well-structured, taking <10 minutes programming in Python to parse everything. I may not try to develop features like #12 (add tags for each problem) or #14, because a LeetCode-like website is not what I am aiming at.

The best way to use this project is:

I am pretty sure that the LeetCode official are now working on similar features. After the official version is fully developed, it will be something showing together with the problems in the LeetCode website, so all the issues will no longer exist anymore.

srajabi commented 1 year ago

Do you ever plan to open source the closed source part? I'm curious how you calculated the ratings just for learning. Specifically confused about how you used MLE to do this.

laraconda commented 1 year ago

What do the rating of the problems mean? And what do they mean in terms of my own contest rating?

zerotrac commented 1 year ago

What do the rating of the problems mean? And what do they mean in terms of my own contest rating?

You can think of the problem ratings having the same metrics with the contest ratings.

laraconda commented 1 year ago

Yes. This I understand. But what does it mean exactly? I am 1600 in leetcode, if I encounter a 1600 problem in a contest does it mean I will solve it 100% of the time? 50, 10%? There has to exist an interpretation for the relationship between a contestant rating and a problem rating. Even if its not in so specific terms: Is there a good chance I will find it challenging, easy, very hard?

yanrs17 commented 1 year ago

Yes. This I understand. But what does it mean exactly? I am 1600 in leetcode, if I encounter a 1600 problem in a contest does it mean I will solve it 100% of the time? 50, 10%? There has to exist an interpretation for the relationship between a contestant rating and a problem rating. Even if its not in so specific terms: Is there a good chance I will find it challenging, easy, very hard?

I think it is 50%. From my experience, Easy: [0, Your rating - 300]; Medium: [Your rating - 300, Your rating]; Hard: [Your rating, Your rating + 300]; Very hard: [Your rating + 300, Infinity]. You can argue about 300 to be 200 or 400, etc.

But don't make it so complex, just finish all the questions in [Your rating, Your rating + 300]. So if your rating is 1600, then you just work as many questions as possible in rating from 1600 to 1900 from this list, then you will improve your algorithm skill. If your rating is increased to 1700, then just work on questions in this list with ratings from 1700 to 2000, etc. You can argue about +300 to be +200 or +400 etc, but what I want to say is to just work on problems slightly higher than your current rating and don't make it so complex. Then you will improve.

zerotrac commented 1 year ago

Yes. This I understand. But what does it mean exactly? I am 1600 in leetcode, if I encounter a 1600 problem in a contest does it mean I will solve it 100% of the time? 50, 10%? There has to exist an interpretation for the relationship between a contestant rating and a problem rating. Even if its not in so specific terms: Is there a good chance I will find it challenging, easy, very hard?

Pr[a contestant with rating x solves a problem with rating y] = 1 / (1 + 10^((y-x)/400)). Reference: https://en.wikipedia.org/wiki/Elo_rating_system

gneginskiy commented 6 months ago

The tool itself is awesome, me and friends of mine are using it actively while practicing.

Recently I took a look at https://leetcode.com/api/problems/algorithms/ and understood that response from this authenticated API can be used to filter tasks based on whether they have been solved or not. I sketched out the code to "join" this data to the list of tasks, and be able to filter it, but for now I succeed only with using data which were previously saved as json file.

Not having much experience in front-end, I'm struggling to propose any viable solution that would "download" api data of currently logged-in leetcode user directly from API. What's your opionion, how could this be done using front-end only, so that the app would remain stateless? What would be the right direction for it?

while it's a bit of off-topic here, I would appreciate your input thanks in advance

PritishMishraa commented 2 months ago

@gneginskiy working on something similar here: https://upsolve.pritish.in/ , and the auto filtering is doable but a bit of a hassle, its wip: https://github.com/PritishMishraa/leetcode-upsolve/tree/auto-refresh