The programming task should at least test language + programming skills + intelligence. We considered using the programming task for addressing a real problem.
Recent contests had thousands of contestants, working from anywhere in the world, with very different backgrounds. The contestants may use any tools they like, and any information at their disposal. Furthermore, teams may be of arbitrary size. These `contestant-friendly' rules have some important practical consequences for the organizers (that is: us!).
- the programming task should not be easily solvable
- the programming task should not be solvable by using a lot of computing power
- a solution to the programming task should not be lying around (or for sale) somewhere
- we have to think about how to deal with the fact that contestants are going to use many programming languages and compilers
- the solution space of the programming task should be large: we don't want many teams to submit the same, correct or best, solution
- there should be a clear way to determine the winner of the contest: the solution space of the programming task should have a total ordering without a top (or bottom)