2006 ICFP Programming Contest registration opens

Language lovers:

Registration is now open for the 9th Annual ICFP Programming Contest!


The contest, associated with the International Conference on Functional Programming, will be held on the weekend of July 21-24. The contest task will be released at noon EDT on Friday, and entries will be accepted until noon EDT on Monday. Registration is free and open to all. Teams may participate from any location, and may use any programming language(s). Last year, 360 participants formed 161 teams from 26 countries.

Prize money totaling $1750 US will be awarded to help defray the costs of travel to the conference for the winners and for small cash prizes. In addition, the winners of the contest will receive bragging rights for the programming language of their choice. This makes the contest a popular avenue for demonstrating the superiority of a favorite language, or for exercising an experimental tool.

Though the specifics are secret until the contest begins, we promise that this year's task will be very different from past competitions. This year's theme is "computational archaeolinguistics."

Stay tuned for more information as the contest approaches!

- 2006 Contest Organizers
CMU Principles of Programming Group

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

codex released!

We've released the first part of the contest. Participants can download it from the contest website. More information will become available at noon (ET) on Friday!

confused spectator

This year's contest is a little more opaque than those in the past for those of us following along at home (or at work, as it were). What is going on? Is there a contestants' blog?

Perhaps if we could unlock the .umz file?

...not sure what kind of file that is? Speculates encryption involved (but have been known to guess wrong more times than not).

You must register for the contest to decode it

You must register for the contest to decode it.

I got sucked in..

.. and registered and implemented a universal machine according to the spec and executed the codex and entered the decryption key and dumped the data and logged into umix as guest and executed the most trivial basic program and gave up on basic and hacked into an account by hand and played the adventure game and it looks like a tower of hanoi problem and now..
.. I MUST ATTEND TO OTHER THINGS! so I'll be stopping at this point.

really cool contest though..

team: okigiveup
score: 210 (as it shall remain)

Much fun!

This was the first time I have entered an ICFP, unfortunately I had not blocked out the weekend so there wasn't much time to work on it..

- Got the UM interpreter coded up (C++) in about 2 hours, decrypted UMIX, logged in, etc.
- Using my interpreter's virtual memory, I hacked all the account passwords (including all three administrative accounts).
- Got all the intro points (230 points)
- Fixed up the BASIC program for 100 points
- Dove into Advise, implementing mult (152 points). Others got more points, but I don't see how make the code any smaller..
- Hacked on the Advise XML challenge, but it's still missing a rule or two (works for about 95% of the tests).
- Worked through adventure manually for two stacks (key and usb cable) before dropping it. (would take awhile to write the execution engine for it)
- Took a stab at Black with a brute-force generator. Got the first puzzle, but never passed the others (too slow). This looks like a job for a logic language. (10 points)
- Ants was entertaining to think about, but I couldn't come up with a programmatic solution, and there was no way I could think through them manually in time. Finished the first puzzle for 30 points.
- Yang was way beyond my comprehension. Seems like it needed a logic language too.

Final score: 557

Great fun, and perhaps I will devote the whole weekend to it next year .. :)



First, kudos for the sideways thinking on the accounts!

I did balance by hand. Another teammate had a semi-automated approach (assembler in gforth, brute forcer for snippets of code in perl). I blame corewar for the low tech approach :)

As for black, lurking on the irc channel suggests that most people begun with a solution that had the correct output, and then added no-op swaps randomly until the number of plinks were satisfied.

Some people on the channel also found a general solution to the non-trustworthiness of deep pattern matching: they basically had an explicit pointer in the expression tree. Obviously, it wasn't needed for Arith (all the reduction can be done from the toplevel expression), but, for xml, it seems essential (well, almost. I managed to make it work without any explicit pointer, but I deleted the code once I got the key :).


I spent most of my time on Adventure and got a decent parser/searcher hacked up in O'Caml which was able to solve all but two of the rooms (probably due to a bug in my implementation). I had the same trouble as you with Black, that my brute-force search couldn't work out anything but the first problem.

The 2D language seemed the easiest to me (though I had trouble with the raytracer), since under the surface it was just a simple functional language. Had I time I would've liked to write a code generator for it (one team actually did!) since drawing the boxes was tedious, even in an editor with picture capabilities.

Final score: 551

UM implementation

I unfortunately wasn't able to participate as I couldn't cancel my weekend plans. After chatting to some participants last night though, I got tempted into writing an UM implementation and playing around with the puzzles.

If someone feels like solving the puzzles but not writing the UM they can borrow my implementation: