Each year, the InternationalConferenceOnFunctionalProgramming
sponsors a 3-day programming contest (also with a special 24 hour lightning-speed category). The problems are usually interesting and challenging (see below). The contest is open to anyone who wants to attempt it, and doesn't specify the use of any particular programming language or family of programming languages.
The contest is related to the International Conference on FunctionalProgramming
, but is in no way restricted to FunctionalProgrammingLanguage
s. It looks as if historically most entries are not written in functional languages.
In addition to various functional programming languages, the machine comes pre-installed with support for C/C++ (gcc), Smalltalk (SqueakSmalltalk
), Java, Ruby, and many more. (Recent contests have only required submission of a dataset, which you generate on your own equipment by any means available.)
The notable prizes are the "unlimited bragging rights":
- First place: Your programming language is the programming tool of choice for discriminating hackers.
- Second place: Your programming language is a fine programming tool for many applications.
- Third place: Your programming language is also not too shabby.
- Lightning winner: Your programming language is very suitable for rapid prototyping.
- Judges prize: Your team is a group of extremely cool hackers.
Preparation of the task has become (or always was) a great technical ordeal for the host. Preparations for the 2007 contest began in 2005, and there were full trial runs of the contest two months before the real thing.
- 1998 (http://www.ai.mit.edu/extra/icfp-contest/)
- Challenge: write a program to play pousse (extended tic-tac-toe)
- First Place: CilkLanguage? (C with concurrency)
- Second Place (after tie resolution): ObjectiveCaml
- Judge's Prize: JayLanguage (very strong for its size)
- 1999 (http://www.cs.virginia.edu/~jks6b/icfp/)
- 2000 (http://www.cs.cornell.edu/icfp/)
- 2001 (http://cristal.inria.fr/ICFP2001/prog-contest/)
- 2002 (http://icfpcontest.cse.ogi.edu/)
- 2003 (http://www.dtek.chalmers.se/groups/icfpcontest/)
- 2004 (http://www.cis.upenn.edu/proj/plclub/contest/)
- 2005 (http://icfpc.plt-scheme.org/)
- Challenge: Robotic cops & robbers game involving cooperation and bluffing.
- The twist this year: two weeks after the main 3 day contest, the specification was modified and you had 24 hours to update your submission. This measured the maintainability of your solution and the agility of the team in the face of changing requirements.
- First Place: HaskellLanguage
- Second Place: DylanLanguage
- Third Place: HaskellLanguage
- Judge's Prize: DylanLanguage (for most effective reuse of the first submission [which came in first])
- 2006 (http://www.boundvariable.org/ & http://www.cs.cmu.edu/~rwh/papers/contest/icfp2006.pdf)
- The theme is "computational archaeolinguistics." (It was multi-layered this year. First you had to construct a virtual machine to decompress and execute the "codex" (INTRO). Then you had to modify a Roman-numeral-Basic program to hack into accounts on the Unix-like operating system (BASIC). This exposed the six real contest problems, which concerned esoteric language optimization, more ant simulation, and constraint satisfaction.)
- First Place: 2D (As credited), HaskellLanguage, PythonLanguage, CeePlusPlus, Bash and 2D (as on contest page)
- This was a joke. 2D was one of the esoteric languages from the contest! They wrote a tiny bit of their code in 2D just so they could make this claim!
- Second Place: DeeLanguage
- Third Place: AssemblyLanguage
- Judge's Prize: CeePlusPlus and PerlLanguage (Best single-person team - 5th place)
- 2007 (http://www.icfpcontest.org/)
- Host: Utrecht University
- Task: An alien has landed on earth and needs new DNA to survive. The alien's DNA is an interpreted, self-modifying program that is interpreted to produce RNA, and the RNA is interpreted to produce a bitmap. Given the original DNA and the source and target images, provide the shortest possible prefix for the DNA that produces the target image.
- First Place: CeePlusPlus
- Second Place: PerlLanguage, CeePlusPlus, PythonLanguage and Bash
- Judge's Prize: ObjectiveCaml (Best single-person team - 3rd place)
- 2008 (http://www.icfpcontest.org/results)
Maybe you'd like to look into the Judge's Prize winners. Judge's Prize is described as "to be awarded, not on the basis of the competition, but solely at the whim and discretion of the judges. Novel algorithms, interesting languages, beautiful code, arresting user interfaces, use of parallelism -- these things may well count for something in the judges' eyes."
Some heroes (sung and unsung) in the computing world have won the Judge's Prize. For example, the first Judge's Prize winners includes KenIverson
, the TuringAward
laureate, and the Erlang team from 2001's ICFP contest included JoeArmstrong
, the main designer of ErlangLanguage
, and so forth. You can even read some of their code. Enlightening.
See also: ExampleSizeIssues