ElegantSound's blog

By ElegantSound, history, 4 weeks ago, In English,

Hello. During some contest, I have been having trouble with solutions. I will list some problems I faced, and also try to make improvement suggestions.

First things first, quality of solutions. Often times I find myself unable to understand the code of solution, when it is provided. There is absolutely no comments, decomposition, or very strange choice for variable names. I copy that code into my editor and change it, and sometimes it gets twice as small and much more readable. When I don't understand the problem, I look at solution to understand the idea and implementation. Contests take some effort to be created, coming up with problems is hard. But why not do simple things that improve quality, like writing good code? There should be some standard for that.

Second, the solutions themselves (text explaining solutions). It is often bad for several reasons. Sometimes it just gives implementation idea without any sort of proof, why is that correct. Again, pointless thing if I can find some good written solution. I'm not interested in what to write, I want to know why is it right and how to come up with this idea. So I have to look in comments or ask for help in other places. Other times the solution is too complicated (easier one exists). This is not as bad, but does not help with understanding most of the time. I don't ask for perfect solution, but a reasonable one. I'm sure there still will be discussion over different approaches and views in comments, and that is also a good thing, so solution should not be too big covering all cases and implementations either. Discussion is not there to translate solution, but to enrich it.

Third thing, solution publish time. If you are making a contest and created hundreds of tests, you must have that solution written before contest, right? Maybe submit it after one hour each contest? Maybe there might be some reasons not to do that, but can we get a timer before solution is submitted? Sometimes I check for it and then switch off to other things, and when I'm back after several days, I forget most of the problems and my ideas, to understand, what went wrong. I am sure this will make our lives easier.

Apart from that, there should be a better quality check for solutions. Small mistakes, some links not working, Russian solution going to English one, punctuation, indices, etc... Again, most of them are easy to find if it is checked properly. I like Codeforces and think that there are many small details that could make the site much more popular. Apart from technical and visual improvements, sometimes solutions are as important as problems.

Another few ideas I'd like to be implemented: Let users publish their own solutions (update existing ones, not in form of blog). Sometimes, author's solution is not good (see above). Maybe the contest is old, those are important too and need proper solutions. Let people add their own solutions to the contest. Like pull request on GitHub. This feature might be restricted (so not everyone posts theirs after contest is over). Participant should describe why his solution is better than given one, if it exists. Maybe they will add drawings to the solution, or a better example. Maybe they came up with different approach. This will make sharing ideas easier, and users will understand the problem better.

Adding tips instead of solutions. Each problem should have several "layers" of solution. Tip 1 could be saying what to pay attention to. Tip 2 might be listing some properties of data. Tip 3 might be telling algorithm to use. Describe common mistakes users made on this problem, and how to avoid them. Then full solution could come. This would be more productive, and actually helping people understand and come up with the solution, instead of giving it right away.

What are your thoughts about this topic?

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

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

Partially agreed, but we still need to be thankful for such great platform and regular contest environment. Those improvements may happen someday in near future. Hopefully!

  • »
    »
    4 weeks ago, # ^ |
      Vote: I like it +7 Vote: I do not like it

    I'm not saying I'm not thankful. This is a great platform. And if we can make it even better, why not do so with our help?