It was around three years ago, when our team mate, Suraj, had asked us to implement an automated system of sending goodies. We were struggling to deliver the users their winnings on time and quite a few of them would never reach their intended users. Not responded emails, faulty stale addresses, goodies getting lost in transit and tracking issues; left us hassled. We altered processes, included more checkpoints, reached out to our users, but nothing seemed to work.
Quite naturally, we liked the suggestion. The idea was to switch from a “push the goodie” system to “pull the goodie” one. Let the responsibility of getting a goodie be given to the users. We realised this would solve additional problems too, like the same user getting the same goodie multiple times, by giving her more options of accumulating points and winning something of a higher value.
This year, our growing struggle made us pick this up as a gift to ourselves and our users, as we turned seven. In the summer, with our intern, Raju Varshney, putting his hands up, we finally decided to put an all out effort to get this out. While he took up the coding, the rest of us scampered around to get an exciting new list of goodies prepared. And eventually the new system got ready to be served.
However, one thing at CodeChef is that we are a team full of pranksters! We love playing pranks on each other and we thought this to be a great time to include our users. It was long back that we did something similar and since then we have hardly done anything that grave! And this provided us with the perfect opportunity. It also served us as an experiment.
While we implemented the new system, we also decided to change the goodies to those of no monetary value to be considered as a token of appreciation for the effort put by the users. We wanted to see whether all our users want a goodie of monetary value or is it the winning that matters? We added three fun goodies on the site and kept our fingers crossed to see if one can spend her hard earned laddus against something that wasn’t initially promised – the duck, the cube and the ball.
And what we got was a pleasant surprise! Though we got a lot of criticism on the selection of our new goodies, we did find some of our users placing orders to actually get them! Kudos to them! Though we are removing those dummy goodies, we promise to give these users what they have ordered while reverting their laddus into their accounts. We had loads of fun and we hope that you would not mind this small prank of ours.
With this, we unveil the new goodie system. We have credited all your pending winnings as laddus into your account. Go ahead and check them out and have a look at the new goodies. And order whatever you like. We believe you will like some of them. In case you have any doubts or concerns regarding your laddus, do send us an email to firstname.lastname@example.org. Do not forget to read our terms and conditions to get more insight into the process and to not be disappointed later. We promise it is a good read.
The floods in Chennai that engulfed the city have passed and the city is coming out from its state of disarray and wreckage. Our empathies are with all those it affected. The spirit of the individuals and organizations that helped out during Chennai’s time of need was truly inspiring.
As everything came to a halt, the ICPC regionals were naturally rescheduled. In the aftermath of the floods, the Chennai ICPC Regionals will now be held on the 23rd of January and undoubtedly, enormous efforts were put in to resurrect this contest. Team CodeChef will visit the regional site to support the teams, help out with registrations, and most importantly see the contest go superbly for everyone.
The CodeChef kitchen is already emptying once again as we leave for the Regionals in anticipation of a great contest and a rejuvenated Chennai.
We hope that with all the combined efforts going into the contest, the teams will have a good environment to code in, and will make this chance to go to the World Finals really count. That being said, our heartiest congratulations to all the teams for making it to the onsite contest. And all the very best for #ICPC2016 regionals.
That’s all from Team CodeChef for now, we will be in with more news from #ICPC2016 soon. Till then, keep coding!
It is that time of the year again – when we at CodeChef pack up our backpacks and travel to the sites of the ACM ICPC regionals. Needless to say, we are stoked! Our office has become a makeshift inventory shed with all the cool goodies taking up a lot, and we can’t stress on the word LOT enough, of space! For weeks we have been prepping for this yearly encounter with all those brainiacs at the ICPC Regionals and we are all set to go see them.
We will be there interacting with the participants during registration where we will definitely see everyone putting their poser face on for #myicpcselfie and will catch up with them later during the practice round too.
It has been a chaotic week back at the kitchen, with all the goodies being designed and redesigned till they are absolutely perfect! We hope you like them as much as we do.
Also, a shout out to all those who have qualified for the #icpc2015 regionals, congratulations and all the very best! We are hoping for some exciting contests among the teams, an amazing event, and lots of fun getting to know all the enthusiastic coders. That’s all for now, we have flights to catch!
PS: To all candidates eligible for the travel reimbursement, come with your documents, find one of our team members ( you will find us at the registration desk on Day 1) and hand them over to us.
1st March 2009, five years and a few days from now, we launched CodeChef. It has been a fascinating journey since then. It couldn’t have been anything else!
It is our anniversary month. And anniversary is a time of celebrations. And we did celebrate. You too joined by taking part in our Trivia contest and showed us how much you love us. It is also a time for assessment and introspection for what has been done and what we intend to do. Let us start by doing the mandatory and the mundane of listing down what we did in the last one year so that we can conceal what we did not:
And all this apart from the usual monthly and college contests, responding to your emails, procrastinating on most, reading the flak and the feature requests that we keep getting on various forums. That was quite a bit of work!
On a more serious note, listing down the things done is quite a task in itself. It is also extremely easy to bask and get carried away by mentioning all things glorious. However, it is only the mistakes, the failures and the mishaps that happen that keep us grounded and make us strive to improve. It was not entirely a dream run as it may have seemed until now. Be it the numerous intermittent hiccups during and outside of the contests (yes, we are still acclimatising to the new setup) or the infamous goof-up, there were not-so-bright days for us as well. Apology is only a way to convey that we care and that none of these were intentional. It does not undo the damage that was done. And we did learn from each one of them – we now know how not to do things. However, there are a lot of pending things on our plate that we have not been able to dish out including this, and one of them is also dealing with the cheating cases – still something that we are figuring things about.
No report card is complete without the backing of the numbers. So let us present some figures that will put the highlights of the year gone by in some perspective:
So, here we are after an year of moments of joy, pride, love, affection, glory, kudos, accolades… and after all the bragging, it is time for us now to be humble.
None of this would have been possible without some invaluable contributions and we take this opportunity to thank the special set of people who made this possible:
Now, letting the accolades and critiques of the year gone by to sink in, let us also give you a peek into the future. So far, with now a biggish team of seven, we have mostly been firefighting and trying hard to make this platform better. We have been working on feedback, bugs, feature requests and also trying to be as responsive as we possibly can. Over this period we have realized the limitations that we have put on ourselves. While interacting with you all at various forums, we realize that there is a whole community out there willing to help us in this endeavour. And since this entire platform is being driven by the community, we intend to open it up to you to start contributing to the development of this platform soon. How and when is something that we still need to ponder and put our thoughts together. But we believe that the community has been doing a fantastic job of carrying it forward and they can probably do a much better job and help us drive its progress much faster. We will continue working on your feedback and we intend to take each and every point mentioned in this list and fix it.
The fifth year has given us some very good memories to cherish, and we hope the sixth will offer even more and that you all will be alongside us through the thick and thin, as you have always been.
In anticipation of a bright year, let us drop the ball and let the party roll in.
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.