For over a year now, we at Codechef have been setting up complex coding problems and trying to find the best programmers to solve them. We are often asked why we do this. Why do we make people rack their brains just to solve these hypothetical problems? Have you ever considered the thought that these problems might not just be hypothetical?
Until now, we told you that we were just trying to promote awareness about algorithms and the like in India. However, due to recent security clearances granted by the Indian Space Programme, we can now be more honest about our motives.
You may be wondering why we’re telling you all of this. Well, here’s the answer: This is the final Codechef Contest. All of the problems from this month’s set are related to specific issues that the Chandrayan Space Team is working on to finalize preparations for the rocket launch.
We are sorry if we had misled you in past, but we did it for India. Now, the country needs your help. We ask that you spend some extra time to help the lunar mission by submitting some super fast code!! (we prefer C/C++ to someOtherLanguage)
We are happy to introduce a rating system for Codechef based on the contests we have every month. In brief, the rating system will have the following features.
1. Every user will have a rating. The user with the highest rating will be ranked 1, the user with the next highest rating will be ranked 2 and so on.
2. The ratings for the users will depend only on how they perform in the contests and not how they perform in the practice section.
3. Every contest problem will get a particular value based on the number of users solving that problem. The maximum value for a problem tends to the value 5 and the minimum value for a problem tends to 1. So, every user is guaranteed at-least 1 point for solving a problem. The selection of the value 5 was to give sufficient room for the top performers to increase their rating. Selection of a smaller range of values would let those participants solving only easy problems and participating frequently overtake those not participating frequently but performing exceptionally well when they do. Suppose the total number of users who have solved a particular problem is PS and the total number of users who have participated in the contest is TS, then the point value for a particular problem is 5 – 4*PS/TS. So, if there are more users successfully solving a problem, it’s value will be less and vice versa. The Challenge problem point value is calculated by taking the product of the score for the challenge problem with the maximum rating a contest problem can have i.e 5.
4. Suppose a user has solved P binary problems and 1 challenge problem and at the end of the contest, these problems have the values V1, V2, .. ,Vp then the total rating score S of the user for that contest will be V1+V2+…+Vp + 5 * (score of the user for the challenge problem).
5. The new rating of the user will be old_rating+S.
Also, every user’s profile page will now have a rating graph along with the current rating and rank. Your feedback in this regard is much appreciated
For the past few weeks we have been getting questions from people interested in setting problems for our contests. Here is a quick FAQ as to what you need to do before sending us the problems and if/how your problems will be used in our contests. Now, at present, we have 2 types of problems in our contest. The first category is the exact algorithm contest problems which have either a wrong or a correct answer. The other type is the challenge problem that we have in each contest. This problem is such that it does not have a deterministic solution. Which means that there is no algorithm that will give an optimal answer for the problem. Submitting problems for both these categories is slightly different.
Exact Algorithm Problems :
Q. What kind of problems are you looking for in the Exact Algorithm Problems category?
A. We are looking for problems which are not standard ones or ones which are not easily ‘googleable’. The problem should be such that it induces the solver to spend time to think of a solution to the problem rather than search for it online.
Q. What files do I need to submit along with the problem?
A. You need to submit the following files :
1) The problem story line. This is the main body of the problem that the participant will read. This should not be ambiguous and should be clear and interesting. It should specify the input format, the output format as well as the constraints on the input and if any, on the output.
2) The solution in a programming language of your choice. This solution should be such that it takes in the input data in the specified format and produces the correct output according to the output format.
3) The test input data. This input data should have all the corner cases covered and should have a few randomly generated test cases too. If there are multiple input files, label them as 0.in, 1.in, 2.in and so on and place all of them in a folder called ‘input’.
4) The output test data. This is the output data corresponding to the input data mentioned previously. The expected output for 0.in should be placed in 0.out, for 1.in should be in 1.out and so on. Place all these files in a folder called ‘output’.
5) A small write-up of the approach taken. You need to give us a small write-up about the approach taken to solve the problem.
Q. How do I send you all the files?
A. Place all the files and folders in another folder named whatever you wish to call the problem. Archive it using an archiver, preferably in .zip or .tar.gz format. Send this archived file as an attachment along with your contact information to email@example.com
Q. How many problems can I submit?
A. You can submit as many problems as you like. If we like a problem, we will use it in one of our contests. If we decide to use your problem in our contest, you would not be eligible to participate in that month’s contest. You might want to send us a set of 4-5 problems so that we might use a higher number of problems in the same contest.
Q. How much do I get paid for submitting the problem?
A. There is no payment for submitting a problem. However, if we decide to use your problem in our contest, we will compensate you accordingly. The compensation would depend on the quality of problems you have submitted. An easy problem would have less compensation compared to a hard one.
Challenge Problems :
There are a couple of things different for challenge problems.
Q. What kind of problems are you looking for in the Challenge Problem category?
A. We are again looking for problems which are not very highly researched. The approaches for such problems should not be available online easily. The problems should not have a polynomial time solution. The challenge problem has a scoring mechanism based on certain parameters. This scoring mechanism needs to be explained properly in the problem statement submitted by you. Also, you need to specify whether the optimal solution minimizes this score or maximizes this score.
Q. What files do I need to submit along with the problem?
A. You need to submit the following files :
1) The problem story line. This is the same as the earlier category. Along with the constraints and other things, you need to mention how the problem is scored and also whether the optimal approach should maximize or minimize the score.
2) The input test data. This should have random and large test cases. Place all the input files in a folder called ‘input’.
3) A program in a programming language of your choice that reads the output and returns the score for that output based on the scoring parameters.
4) A write-up specifying why the problem does not have a polynomial time solution. Some links or research papers pointing to this would be appreciated.
We’ve had some complaints in the last contest about participants reverse engineering test data. While this isn’t necessarily “wrong,” in keeping with the spirit of finding the best solutions to the problems given, we’ve instituted a small rule change. This time around, the challenge problem will be rejudged at the end of the contest, with entirely new test data.
We considered other approaches for all problems including:
* Rejudging all solutions at the end of the contest with new test data (not just the challenge problem)
* Capping the number of submissions per user per day
* Allowing users to only submit solutions at certain time intervals (i.e. one solution per five min)
In the end we have done our best to come up with better, bigger and more random test cases and are holding off on these other change (for now). If you believe there are additional ways to improve the contest format, please let us know.
Amit (The Chef)
p.s. if you wanna see how pretty I am, check out our new Twitter background.
p.p.s don’t forget our first DesignChef competition along starts tomorrow, help us out… spread the word.
We are pleased to announce our winners for our first ever Gamer’s Challenge. (drum roll please….)
Kushagra Gour – Chef of War – All around awesome game, well done!
Meet Shah – The Spoon Hunt – This game was a lot of fun to play (a staff favorite), we wish the graphics were a little better.
We have some other “honorable mention” awards, winners of these will each receive t-shirts.
Best Looking Game
Jugal Manjeshwar – CodeName Chef – Beautiful game, gameplay is repetitive though. By varying the enemies on different levels or including some power-ups this could have been great.
Nikhil Marathe and Denny George – Little Chef – Hilarious story, we really enjoyed it. Game is too hard/quick though.
Best Game by Someone Who has Already Won a Prize
Kushagra Gour – Squash the Bugs – Another great game
Best Use of Binary Dumps and Dangling Pointers
Rasagy Sharma – Run Chef Run – Excellent concept for a game, love the floating pointers. Gameplay is original as well.
Thank you everyone who participated, this was a lot of fun for us, hope you enjoyed it as well. We will have other types of gaming contests in the future.
Update Aug 3rd… We now have photos of the winners with their prizes
Our goals with CodeChef are to challenge and engage the developer community as well as provide a platform for competition and improvement. We’ve heard from many people that when they get a wrong answer or time limit exceeded they aren’t sure how to debug their submissions. We are working on a few ways to improve this:
For our April Contest, we will also be experimenting with another major change. After the contest is over we will make all code submissions for problems within that contest, publicly available. Eventually we plan to allow comments on individual submissions as well. We hope this will allow less experienced developers to learn from their peers and generally promote knowledge sharing. We look forward to hearing your feedback on these initiatives.
It’s been just over a month since we’ve launched and we’re really excited about the way things are going. We now have over a thousand registered users and accept hundreds of code submissions a day. The response has been great, but we’re not done. As a way to continue to challenge, engage and give back to the developer community, we’re pumped to announced a few new initiatives.
CodeChef Campus Chapters – Are you a student interested in setting up a CodeChef Chapter on your campus? Each month we’ll send you optimal solutions to specific contest problems, tips & tools to become better software developers and (of course) some awesome CodeChef merchandise (everyone looks cool in chef’s hat).
Blogger Community Program – Are you a blogger interested in spreading the word about CodeChef? We got what you need: exclusive access to content, press passes and more.
User Group Outreach Program – Are you part of a user group which is enthusiastic about programming? We’ll give you a place for your meetings, and a chance for your users to network and gain recognition.
First contest starts Sunday, keep practicing…
We’re happy you’re here. At CodeChef, we want to provide you with an opportunity to go beyond your every day work and studies and improve your coding skills through online competitions, practice problems and discussions (and hopefully have some fun too!).
We will be rolling out a number of exciting features in the coming months, stay tuned to the blog for updates. If you have any questions, comments or feedback let us know at firstname.lastname@example.org.