The contestants received a hand full of programming problems and had one computer per team (of up to 4 people) at their disposal. This single computer is commonly perceived a bottleneck but I think it makes the game quite interesting. While the contestants think, create solutions, and electronically submit their crafted programs, an judging systems tests these solutions. The jury monitors (and possibly interferes with) this process, and it’s always good fun to see which briliant and completely wrong (and everything in between) solutions the contestants came up with.
This year we had a succesfull match. A lot of teams showed up and the eleven problems made up a balanced and solvable collection. The average number of problems solved by a team was above 5, making a lot of competitors feel they played well (and they did). The winning team solved 10 of them, and all teams at least solved two (see detailed score information).
about the problems
Creating the right set of problems is a challenge. It’s easy to create hard problems; I remember organising the dutch programming contest in 1997 where the winners were the quickest of two student teams (of a total of 30 or so) solving 3 out of 8 problems. The other student teams solved 0,1 or 2. On the other hand, it’s been all too easy if all problems were solved by a team before the match ends.
An approach that balances the problem set and is applied each year, is making one real-real easy problem which should be solvable by any student. This year we had SpuitElf, which has a so deviously crafted Dutch title, I would never be able to translate it into English. In a long story (requiring smart reading), the problem introduces the hypothetical existance of extraterrestial races having a different number of fingers/claws/tentacles when compared to humans. Our decimal positional counting system is assumed to be based on our ten fingers, which would of course be completely different for these other beings. The asssignment is to write a progam that, given a number of fingers n for a race, writes down how the number n+1 is denoted in the n-count positional system. (If you don’t get it I can only tell there are 10 kinds of people in the world: those who understand binary, and those who don’t. What a great help I am
)
Programming contest problems spring from several sources. Sometimes, it starts with an efficient algorithm around which a hypothetical context for the problem is created (possibly refering to real life situations). The other way around, it can be a real life encountered problem where one asks himself the question how to solve it. Usually, an initial idea needs some revisions before it’s mature. It should be unambigious, clearly and completely specified, solvable in a decent amount of time and without domain-specific knowledge, and if possible fun to read.
For instance, this year’s problem TAR was actually inspired by a board game called the Trans America Railway. While playing this game, I wondered, given a set of stations, how to determine the minimal amount of rail pieces required to connect them. This is a real hard problem, so it should be simplified for a bit. Hexagons are hard to handle and don’t amount to the real complexity of the issue at hand, so we’ll transform the original playing field into a grid. The problem is that with any number of stations, this is an NP complete problem. That means that it’s not solvable in an efficient way (Non Polynomal to be exact). But like with many NP complete problem, with a fixed, small n (a limited set of stations, in this case: 3) the problem is comprehendable and solvable in constant time.
Anyway, within the organizing commitee most of the time is spent creating the right, well specified set of problems and solutions. Creating non-ambiguous specifications means playing with the language carefully. Have a look at the resulting problems of this year (in Dutch).






