The Fourth ICFP Programming Contest

Organised by: Damien Doligez, Luc Maranget, Pierre Weis, INRIA Rocquencourt.


The results are now public: We also awarded a third and fourth place, although no prize is associated with them. Well, in fact, we awarded two third places, since these two entries are (almost) tied, using the output size criterion.

The details of the judging process are now available. The tar files of all the submissions are available too.



The contest is over. The winners were announced in September at the ICFP conference, and at the top of this page.

Please check the news page for announcements.

Interesting stuff sent by participants: a poem; a SML/NG to PS converter; a (unofficial) version of the results table that may be easier to read.

The contest

Convinced your favorite functional programming language provides unbeatable productivity? Do functional languages lead to better and faster programs? Perhaps it's just the case that functional programming languages attract better programmers than other languages... and you and your friends are the best of the best.

If so, we will provide you the opportunity to prove it! We are pleased to announce the 2001 ICFP Programming Contest to be held in conjunction with ICFP 2001 (not to be confused with ICFP2001). All programmers are invited to enter the contest, either individually or in teams; we especially encourage students to enter.

We've designed the programming contest for direct, head-to-head comparison of language technology and programming skill. We have a range of prizes for the winners: cash awards, invitations to the conference for students, and, of course, unlimited bragging rights.

We hope to repeat the great success of the first three ICFP programming contests of 1998, 1999, and 2000.

Team composition

Players may enter alone or as teams of any size. Anyone is eligible to enter (even faculty!), except the Judges. We especially encourage students to enter the contest. (We even have special prizes reserved for possible student winners; see below.)

Contest Overview

On Thursday, July 26, 2001 at 15:00 UTC (see this page to convert to your time zone), a challenge task will be posted on the Internet. It will also be sent by mail to the contest mailing list.

Teams will have 72 hours to implement a program to perform this task and submit this program to the contest judges. There will also be a special lightning division for those who have only 24 hours to spend on the contest.

Although the precise task chosen will not be revealed until the contest begins, correctness, algorithmic cleverness, and performance will matter. Programming languages that help programmers to build complex systems quickly may allow contestants to attempt particularly sophisticated implementations in the 72 hours allotted for programming.

This programming contest is being conducted by ICFP, which implies a context of functional programming. However, rather than debate the definition of a "functional programming language," we will allow submitted programs to be written in any language whatsoever, as long as it has an implementation for Pentium PCs running Linux. Mixing languages is entirely acceptable; perhaps you will write in Caml and Haskell, with a Tcl script to do the gluing.


The ICFP 2001 general chair has generously authorised a range of prizes to reward and recognise the contest winners: money, wisdom, and peer recognition.

Monetary prizes are listed and will be awarded in US dollars. Due to fluctuations in exchange rates over time, the Euro equivalents given below are only approximate. To get an exact conversion from US dollars to Euros, or any other currency, visit the The Universal Currency Converter.

First Prize

The team winning first prize in the competition will be awarded

Second Prize

The team winning second prize in the competition will be awarded

Judge's Prize

Finally, the Judges' Prize is 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 -- these things may well count for something in the judges' eyes.

The team winning the Judges' Prize will be awarded


Contest entrants will have exactly 3 days, from Thursday, July 26 beginning at 15:00 UTC through Sunday, July 29 at 15:00 UTC (see this table of local times) to complete the contest task. ("Lightning" entrants will have 1 day, until Friday, July 27 at 15:00 UTC.)

The task description will be linked to this web page and e-mailed to the list.

No submission will be accepted after 15:00 UTC Sunday. You may, however, submit multiple times; the judges will use the last submission received before the contest deadline.

What if your team has more than one good idea? We will consider multiple entries from the same team provided that the judges consider those entries to be significantly different. The judges are likely to consider use of a different algorithm or a different language to be significantly different. The judges are unlikely to consider small variations, e.g., changed heuristics for alpha-beta search, to be significantly different. Should the judges decide two entries are not sufficiently different for both to be considered, they will consult with the team to decide which should be officially entered. The judges' decisions about significant differences are final.

Your program will have to run on a PC under Red Hat Linux 7.1. (We regret we cannot support any other operating system.) More details are available about this machine and its pre-installed software. We strongly suggest that you submit a stand-alone, statically linked executable. If not possible, you will have an option to submit source code along with a "buildme" shell script to compile them and a "runme" shell script to run the code. However, keep in mind that the contest machine is not guaranteed to have your favorite environement and libraries installed. See the list of the software installed on the machine. The exact procedure to be used to submit your entry will be posted later.


We have a mailing list that we will use to keep participants informed of news about the constest, and where we will post the task description at the start of the contest. You can subscribe to this mailing list at any time. It is not strictly necessary to subscribe, but it helps the contest organizers plan the event, and by registering the email addresses of your team members, you ensure that we can email the task description directly to your team with zero delay when the contest starts.

Good luck and have fun!

Got a question? Check the FAQ!

To contact us, write to