zenolus's blog

By zenolus, history, 3 months ago, In English

Hello, Codeforces community!

First of all, I would like to thank MikeMirzayanov for such an awesome platform. It's been almost a year since I joined and ever since I was always in the dilemma which question to solve. It's a commonly accepted fact that one should solve the most solved questions first. Many other recommender websites out there follow the same pattern — solved count for the win. However, after some days of following it, it kinda felt repetitive. Yes, the ones that everyone can solve would be the easier ones. But how do we determine if it can teach us something new? Codeforces has the problem rating system which gives a more accurate view of which question is easy and which is not. But as with the case of solved counts, rating can't be considered as the sole differentiator.

After having analyzed for some time, I found that there are three important factors that decide which problem is best suitable for practice — problem rating, problem tags, and solved count. The solved count is a good measure for determining which problems you are more likely to be able to solve. Problem rating can help us classify problems as easy, medium, or hard for us according to our rating. Thirdly, I would like to explain the importance of problem tags. It can be seen that some tags are more frequent in certain rating ranges. For example, if you check problems of rating 1300-1500, you are more likely to see implementation, brute-force, or greedy problems. So, someone who is in range just below this range can expect questions with these tags to be there in live contests let's say as a Div2 A/B. So, solving these problems will definitely help in ranking up.

Combining all these, I built UpSolve.me as a platform to give personalized suggestions for practice. The rating taken into consideration is the max rating of the user as I believe we must always look beyond what we have already achieved. Everyone has bad days and ratings fall. But it ain't bad targeting a high +ve.

May the codeFORCEs be with you!

Screenshots

Note: I am still working on the project. Team practice and tag-based practice mode will be arriving soon. Feel free to look around and give your opinions. Your involvement will only help me boost the platform. Any constructive criticism or feature requests are dearly welcome.

UPD: I didn't expect so many people flooding in at once. Heroku seems to not be able to handle these many requests at one go. I'll fix it asap. Stay tuned. Thanks!

UPD2: Moved from Heroku to Google Compute Engine. Feel free to explore it now!

UPD3: Things seemed to be corrected on GCE but again a problem popped up that https requests were not passing through. I have reverted it back to Heroku and have enabled it to restart instantly on crash so that you don't experience downtime. However, it's a temporary fix. If anyone can help me out setting it up on the GCE, please do reach out to me.

 
 
 
 
  • Vote: I like it
  • +349
  • Vote: I do not like it

»
3 months ago, # |
  Vote: I like it -9 Vote: I do not like it

May the codeFORCEs be with you! — will become a meme for sure

»
3 months ago, # |
  Vote: I like it +3 Vote: I do not like it

Good job on the frontend bro! I really love the UI

  • »
    »
    3 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Thanks! The looks and feel are important if you plan to use something on a daily basis. That's what I had in mind.

»
3 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Auto comment: topic has been updated by zenolus (previous revision, new revision, compare).

»
3 months ago, # |
  Vote: I like it 0 Vote: I do not like it

great idea zenolus!!!

»
3 months ago, # |
  Vote: I like it +1 Vote: I do not like it

Can you help me out. Nothing happens when I fill in my codeforces handle and press Enter.

  • »
    »
    3 months ago, # ^ |
      Vote: I like it +3 Vote: I do not like it

    I added an update you see. Heroku seems to have some issues with the number of requests. I'm working on it. Will fix it asap and let you know!

  • »
    »
    3 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    You can try now. I have fixed the issue.

    • »
      »
      »
      3 months ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Its not working for me too. I just checked

    • »
      »
      »
      3 months ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Would be nice to display a message..."currenty not working" or something.

»
3 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Awesome UI and great job. But what is the difference between UpSolve.me and Codeforces Visualizer

  • »
    »
    3 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Thanks! I didn't know about the site. I'll check it out for sure and let you know.

  • »
    »
    3 months ago, # ^ |
      Vote: I like it +1 Vote: I do not like it

    Hey! CF Visualizer seems to be a great website for user info statistics. I mean you can see how you grew over the last few contests, can compare against other people. But UpSolve.me is focussed on proper practicing, i.e., what to solve.

    • »
      »
      »
      3 months ago, # ^ |
        Vote: I like it +1 Vote: I do not like it

      Yup.My apologies, I did not see the practise problems part. Great job buddy and thank you for contributing the community.

»
3 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Auto comment: topic has been updated by zenolus (previous revision, new revision, compare).

»
3 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Its not working..

  • »
    »
    3 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    I'm trying to see what's wrong. I'll let you guys know when I clear it

»
3 months ago, # |
  Vote: I like it +1 Vote: I do not like it

Why I see problems only from the last round? I want to upsolve older rounds which I forgot about. Is there any way I can see older rounds' unsolved problems as well?

  • »
    »
    3 months ago, # ^ |
      Vote: I like it +1 Vote: I do not like it

    I can add it. But how many past contests should we keep? Like currently I'm showing only of 1

    • »
      »
      »
      3 months ago, # ^ |
        Vote: I like it +1 Vote: I do not like it

      Could you make it so that we can choose the number of contests? That'll be pretty cool.

      And great work. Thank you

      • »
        »
        »
        »
        3 months ago, # ^ |
          Vote: I like it +2 Vote: I do not like it

        Okay cool. I can do that. No issues!

»
3 months ago, # |
  Vote: I like it +6 Vote: I do not like it

It doesnt seem to be working now, but thanks for the great site.

  • »
    »
    3 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Yeah, I have been trying to find the perfect fit for the backend. This is my first time experimenting with actual backend hosting. So, please bear with me a little. I'll get it up.

»
3 months ago, # |
  Vote: I like it +9 Vote: I do not like it

why its not working!? i mean nothing happen when you enter the handle :(

  • »
    »
    3 months ago, # ^ |
      Vote: I like it -19 Vote: I do not like it

    Coz his focus was on building the UI only. Its a hollow website with no backend.

    • »
      »
      »
      3 months ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      That's not the case. It is my first time working with backend. I'm having some trouble setting things right. I'll correct it.

  • »
    »
    3 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    same here

  • »
    »
    3 months ago, # ^ |
      Vote: I like it +8 Vote: I do not like it

    hey, i'm sorry but i'm trying to fix it. First there was some issue with heroku not being able to handle so many requests. Now when I shifted to GCE, there is some issue with http/https. I'm working on it.

  • »
    »
    3 months ago, # ^ |
      Vote: I like it +8 Vote: I do not like it

    Hey Kaycee you can check it out now!

»
3 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Great work bro!! Love to contribute on the site as well.

»
3 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Auto comment: topic has been updated by zenolus (previous revision, new revision, compare).

»
3 months ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

Would it be possible to open source the recommendation engine on Github? I think it would be beneficial for a few reds from the community to look at how you're recommending problems and try to incorporate what they have found helpful in their practice.

For example, if I were to guess, you don't consider WA in your recommendations. I found that at my level, WAs (and looking at the test case) will make me stuck in blue forever. I would definitely help you incorporate that into your recommendations somehow.

  • »
    »
    3 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Sure thing. I was actually going to write another blog regarding how exactly I'm scoring the problems. But due to the backend issue, I didn't have time. I'll soon post another blog and will add a link to the GitHub project.

»
3 months ago, # |
  Vote: I like it 0 Vote: I do not like it

cool! it looks nice.

»
3 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Awesome site!!!

Here are some more suggestions from my end to add to the functionality: (1) You are currently showing the tags. I would rather that you keep a switch function there, whether or not to show. (2) Allow us to blacklist tags, and maybe whitelist some too.

Thanks again for this n0ice website.

  • »
    »
    3 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    As I said in the post, I'm working on two things right now. Team practice and tag-based practice. I'll surely take your suggestions into consideration.

    • »
      »
      »
      3 months ago, # ^ |
      Rev. 2   Vote: I like it 0 Vote: I do not like it

      I think the point (1) should be your highest priority, since tags often "spoil" problems :")

      Point (2) can be done sometime later.

»
3 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Isnt this just like a sub part of codeforces visualizer , they show unsolved problems too , not only from past contests , but problems which were not in any contests too

  • »
    »
    3 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Once again, I didn't know about Codeforces Visualizer before. Besides, the unsolved problems shown there are only the ones that you might have tried but couldn't get an AC. Be it in practice or contest. But what UpSolve does is it suggests what questions you should try so that there is a high probability of learning newer stuff that may help you in future contests as well. Basically, as you might know from the codeforces community upsolving means solving at least 1 question above of your level. That's what the aim is here as well.

    • »
      »
      »
      3 months ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      I thought upsolving meant solving problems from the contest which you were unable to solve before

      There is also a website for problems , and it recommends problems based on the weak areas (as per the submissions )

      https://recommender.codedrills.io , this one i guess

      • »
        »
        »
        »
        3 months ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        Yes, I know of it. But you see, in their FAQ section, they have clearly mentioned about solved count being the judging criteria.

        "We use the number of users who have solved the problem to estimate its difficulty. The recommendations are relative to the difficulty of your solved practice problems so far. So, for example, the easy recommendations for a red coder will be harder than the easy recommendations for a grey coder"

        But I didn't find it to be the only criteria for recommendation. For example, there may be a dp question having 10k+ submissions. But the thing is for a Newbie or Pupil, targeting to be able to solve all Div2 A/B questions, dp is not one of the most important topics. Rather he should focus on implementation, brute force, etc.

        • »
          »
          »
          »
          »
          3 months ago, # ^ |
            Vote: I like it 0 Vote: I do not like it

          How do you know what one should focus on , I just dont understand

          Besides that , you are a specialist yourself , setting any criteria as per your thinking may not be a good idea

          • »
            »
            »
            »
            »
            »
            3 months ago, # ^ |
              Vote: I like it 0 Vote: I do not like it

            Yes, I agree. I am open to all suggestions. I'll be releasing a blog describing how exactly I determine the recommendation score for each problem. Any input on that from the codeforces community will be appreciated and implemented.

»
3 months ago, # |
  Vote: I like it +1 Vote: I do not like it

We are getting an overwhelming response. Thanks a lot guys. But Heroku limits API calls at 4500 calls per hour. If it seems like it is down, don't worry. Please try a bit later. Moving to GCE will solve this problem, but for now, it's a temporary fix.

»
3 months ago, # |
  Vote: I like it 0 Vote: I do not like it

UI is awesome but during loading it sould show loading sign because without any sign it is little bit confusing. And problem suggesions are good.

»
3 months ago, # |
  Vote: I like it +12 Vote: I do not like it

Hi! First of all, awesome website, congratulations. Just a quick suggestion (might only be me), when you hover over a problem, its difficulty starts upside down and then flips back to normal. I think it would look better if it started out in the correct orientation, just my opinion though. Once again, awesome job!

  • »
    »
    3 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    I made it like that cus it kinda felt cool. But if you feel like it's messy, I'll remove it.

    • »
      »
      »
      3 months ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Not messy at all, just a little too extra (again, just my opinion, if you want to leave it looks just as good).

      • »
        »
        »
        »
        3 months ago, # ^ |
          Vote: I like it +20 Vote: I do not like it

        Nah it is a little too extra actually. I'll remove it tomorrow

»
3 months ago, # |
  Vote: I like it +5 Vote: I do not like it

UI rated 100% :)

»
3 months ago, # |
Rev. 2   Vote: I like it +58 Vote: I do not like it

Here's an interesting feature idea that none of the existing sites have: in "suggested practice problems" only show problems from contests I already have some submissions. There are many contests I can't do a honest virtual in because I have solved some random problem from there already. Initially I thought you had this feature because most suggested problems were like that. Also, it seems truer to the "upsolving" theme of your site.

(Contrary to many previous commenters I'm not a big fan of this kind of UI. I'm a firm believer in motherfuckingwebsite.com. Because there are so many not really functional websites with fancy UI (example: Topcoder), plain and simple websites "feel" more robust.)

  • »
    »
    3 months ago, # ^ |
      Vote: I like it +5 Vote: I do not like it

    Thanks a lot for your input. I'll definitely work on that suggestion. Yes, I agree that it is better to have a plain and solid working website rather than a fancy just for show one. But I assure you the fancy UI was just my personal preference. I don't intend to cut on functionalities for that. Besides, referring to a previous comment, would it be better to have more problems in the upsolve section from a number of past contests or should I keep like a filter function that takes a particular contest ID and returns the problems that need upsolving?

    • »
      »
      »
      3 months ago, # ^ |
        Vote: I like it +5 Vote: I do not like it

      would it be better to have more problems in the upsolve section from a number of past contests or should I keep like a filter function that takes a particular contest ID and returns the problems that need upsolving?

      I like the first option. Suggesting based on difficulty is good, I just want to filter out problems that I could use in a virtual contest later. I can go to a particular contest ID myself, but it's not so easy to find upsolvable problems with appropriate difficulty.

      • »
        »
        »
        »
        3 months ago, # ^ |
          Vote: I like it +5 Vote: I do not like it

        Okay I got your point now. I'll work on that.

»
3 months ago, # |
  Vote: I like it -8 Vote: I do not like it

Good job!

»
3 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Can you elaborate a little on the web technologies used for this app? Is the code on any GitHub repository?

  • »
    »
    3 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    I have used MERN stack for this. You can find the code for the frontend here

»
3 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Wow. The UI looks so cool.

»
3 months ago, # |
  Vote: I like it 0 Vote: I do not like it

What I need to do after inputting my handle?

  • »
    »
    3 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    That's all you need to do. Put your handle and submit (press Enter).

»
3 months ago, # |
  Vote: I like it 0 Vote: I do not like it

NOTHING is working properly. please check the issue.

  • »
    »
    3 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    I just checked. It's working. I think when you would have tried, Heroku call limit might have exceeded. Please have a look at this comment.

»
3 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Great UI and logic bro!!!! Thanks for the contribution

»
3 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Good job bro! Really loved the analysis part and problem suggestion. Great Work.

»
3 months ago, # |
  Vote: I like it 0 Vote: I do not like it

I love it! Thank you

»
3 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Thanks for the app! There's a bug in Suggested Practice problems: It suggests problems which weren't solved in div1 contests, but solved in div2. Please fix

»
7 weeks ago, # |
  Vote: I like it 0 Vote: I do not like it

Woah man! That's really cool thing you've developed!!
Just a small buggish thing- the cursor does not seem to be appearing in the section where you have to put your CF handle. I could not figure it out and thought that the app was still loading.
It would be great if you could just fix it please!! And thanks for the cool portal!

»
2 days ago, # |
  Vote: I like it 0 Vote: I do not like it

i Think consider current rating as maximum ratting will help us to go to better position from current rating because so many of coder like me loss their ratting from very beginning and it was so hard to get their ratting back like me. so i think if their current rating can consider as max ratting it will be better to get some great idea to get higher ratting