ICFP Programming Contest
Encyclopedia
The ICFP Programming Contest is an international programming competition held annually around June or July since 1998, with results announced at the International Conference on Functional Programming
.
Teams may be of any size and any programming language(s) may be used. There is also no entry fee. Participants have 72 hours to complete and submit their entry over the Internet. There is often also a 24-hour lightning division.
The winners reserve "bragging rights" to claim that their language is "the programming tool of choice for discriminating hackers". As such, one of the competition's goals is to showcase the capabilities of the contestants' favourite programming languages and tools. Previous first prize winners have used Haskell
, Objective Caml
, C++
, Cilk
and Java
.
First prize: [Language 1] is the programming tool of choice for discriminating hackers.
Second prize: [Language 2] is a fine programming tool for many applications.
Third prize: [Language 3] is also not too shabby.
Winner of the lightning division: [Language L] is very suitable for rapid prototyping.
Judges' prize: [Team X] are an extremely cool bunch of hackers.
Where a winning entry involves several languages, the winners are asked to nominate one or two.
The languages named in the judges' declarations have been:
Ant War game
International Conference on Functional Programming
The International Conference on Functional Programming is an annual academic conference in the field of computer science sponsored by the ACM SIGPLAN, in association with IFIP Working Group 2.8 ....
.
Teams may be of any size and any programming language(s) may be used. There is also no entry fee. Participants have 72 hours to complete and submit their entry over the Internet. There is often also a 24-hour lightning division.
The winners reserve "bragging rights" to claim that their language is "the programming tool of choice for discriminating hackers". As such, one of the competition's goals is to showcase the capabilities of the contestants' favourite programming languages and tools. Previous first prize winners have used Haskell
Haskell (programming language)
Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the...
, Objective Caml
Objective Caml
OCaml , originally known as Objective Caml, is the main implementation of the Caml programming language, created by Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy and others in 1996...
, C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
, Cilk
Cilk
Cilk is a general-purpose programming language designed for multithreaded parallel computing. The commercial instantiation is Intel Cilk Plus.-Design:...
and Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
.
Past tasks
Year | Organiser | Description |
---|---|---|
1998 | Massachusetts Institute of Technology Massachusetts Institute of Technology The Massachusetts Institute of Technology is a private research university located in Cambridge, Massachusetts. MIT has five schools and one college, containing a total of 32 academic departments, with a strong emphasis on scientific and technological education and research.Founded in 1861 in... |
Write a program that plays pousse, an odd variant of tic-tac-toe. Contestant programs were entered into a tournament to determine the first- and second-place program. |
1999 | Harvard University Harvard University Harvard University is a private Ivy League university located in Cambridge, Massachusetts, United States, established in 1636 by the Massachusetts legislature. Harvard is the oldest institution of higher learning in the United States and the first corporation chartered in the country... |
Size-optimize case statements (the contest task spoke about text-based adventure games, but in fact the task was to size-optimize the description of such a game). |
2000 | Cornell University Cornell University Cornell University is an Ivy League university located in Ithaca, New York, United States. It is a private land-grant university, receiving annual funding from the State of New York for certain educational missions... |
Implement a ray tracer using a Postscript-like syntax. |
2001 | INRIA Rocquencourt | Size-optimize an HTML-like markup language by removing unnecessary whitespace and tags, and so on. |
2002 | OGI School of Science and Engineering OGI School of Science and Engineering The OGI School of Science and Engineering, located in Hillsboro, Oregon, United States is one of the four schools of the Oregon Health and Science University . Until June 2001, it functioned independently as a public graduate school, the Oregon Graduate Institute . OGI operates four departments and... |
Implement robots playing a Sokoban Sokoban is a type of transport puzzle, in which the player pushes boxes or crates around in a warehouse, trying to get them to storage locations. The puzzle is usually implemented as a video game.... -like game one against each other. |
2003 | Chalmers University | Implement robots driving a car as fast as possible through different racing tracks. |
2004 | University of Pennsylvania University of Pennsylvania The University of Pennsylvania is a private, Ivy League university located in Philadelphia, Pennsylvania, United States. Penn is the fourth-oldest institution of higher education in the United States,Penn is the fourth-oldest using the founding dates claimed by each institution... |
Design an ant colony that will bring the most food particles back to its anthill, while fending off ants of another species. The contest entry would output a state-machine description of the ant: in principle, entries could have been written by hand. Later the task was adapted into Ant Wars, a strategy Strategy game A strategy game or strategic game is a game in which the players' uncoerced, and often autonomous decision-making skills have a high significance in determining the outcome... and programming game Programming game A programming game is a computer game where the player has no direct influence on the course of the game. Instead, a computer program or script is written in some domain-specific programming language in order to control the actions of the characters... where each participant is a species of ant Ant Ants are social insects of the family Formicidae and, along with the related wasps and bees, belong to the order Hymenoptera. Ants evolved from wasp-like ancestors in the mid-Cretaceous period between 110 and 130 million years ago and diversified after the rise of flowering plants. More than... . The participant then, in a language called Antomata, program a finite state machine Finite state machine A finite-state machine or finite-state automaton , or simply a state machine, is a mathematical model used to design computer programs and digital logic circuits. It is conceived as an abstract machine that can be in one of a finite number of states... to function as the brain of each ant. The ant brain Brain The brain is the center of the nervous system in all vertebrate and most invertebrate animals—only a few primitive invertebrates such as sponges, jellyfish, sea squirts and starfishes do not have one. It is located in the head, usually close to primary sensory apparatus such as vision, hearing,... then control the ant to find and collect food to bring to the home ant hill Ant colony An ant colony is an underground lair where ants live, eat and mate. Colonies consist of a series of underground chambers, connected to each other and the surface of the earth by small tunnels. There are rooms for nurseries, food storage, and mating... , to fend off attackers or making trails of pheromones. |
2005 | PLT group | Implement "bots" for a "Cops & Robbers" game: contestants have to write the control program that guides a Robber-Bot through a quiet urban neighborhood on a mission to rob every bank without getting caught, and the control program for a Cop-Bot dedicated to stopping it. |
2006 | Carnegie Mellon University Carnegie Mellon University Carnegie Mellon University is a private research university in Pittsburgh, Pennsylvania, United States.... |
Implement a virtual machine that runs an operating system (called UMIX) provided by the judges, and crack it using new programming languages with unconventional syntax and semantics, such as 2D and a version of BASIC BASIC BASIC is a family of general-purpose, high-level programming languages whose design philosophy emphasizes ease of use - the name is an acronym from Beginner's All-purpose Symbolic Instruction Code.... using Roman numerals. Many puzzles were tiny versions or parodies of previous contests. |
2007 | Utrecht University Utrecht University Utrecht University is a university in Utrecht, Netherlands. It is one of the oldest universities in the Netherlands and one of the largest in Europe. Established March 26, 1636, it had an enrollment of 29,082 students in 2008, and employed 8,614 faculty and staff, 570 of which are full professors.... |
Implement a 2-stage virtual machine that executes a DNA-like string to produce an image. Then, given an input string for this machine, find a prefix that when added to this string yields an image as close as possible to the given target image. |
2008 | Portland State University Portland State University Portland State University is a public state urban university located in downtown Portland, Oregon, United States. Founded in 1946, it has the largest overall enrollment of any university in the state of Oregon, including undergraduate and graduate students. It is also the only public university in... and the University of Chicago University of Chicago The University of Chicago is a private research university in Chicago, Illinois, USA. It was founded by the American Baptist Education Society with a donation from oil magnate and philanthropist John D. Rockefeller and incorporated in 1890... |
Provide a Mars rover control system that will guide it to a home base while avoiding obstacles and enemies. |
2009 | University of Kansas University of Kansas The University of Kansas is a public research university and the largest university in the state of Kansas. KU campuses are located in Lawrence, Wichita, Overland Park, and Kansas City, Kansas with the main campus being located in Lawrence on Mount Oread, the highest point in Lawrence. The... |
Control a satellite to move between specified orbits and rendezvous with other satellites. |
2010 | Leipzig University of Applied Science Leipzig University of Applied Science The Leipzig University of Applied Sciences is a Fachhochschule in Leipzig, Germany. With 6,200 students, it is the biggest University of Applied Sciences in Saxony. Most of the classes are held in engineering and computer science.... , Germany |
International Car and Fuel Production. |
2011 | Tohoku University Tohoku University , abbreviated to , located in the city of Sendai, Miyagi Prefecture in the Tōhoku Region, Japan, is a Japanese national university. It is the third oldest Imperial University in Japan and is a member of the National Seven Universities... , Japan |
Program a computer with 256 "slots" to outlast its opponent in terms of slots remaining at the end of the match. Submissions include executables that are entered into a two-phase tournament. |
Prizes
Prizes have a modest cash value, primarily aimed at helping the winners to attend the conference, where the prizes are awarded and the judges make the following declarations:First prize: [Language 1] is the programming tool of choice for discriminating hackers.
Second prize: [Language 2] is a fine programming tool for many applications.
Third prize: [Language 3] is also not too shabby.
Winner of the lightning division: [Language L] is very suitable for rapid prototyping.
Judges' prize: [Team X] are an extremely cool bunch of hackers.
Where a winning entry involves several languages, the winners are asked to nominate one or two.
The languages named in the judges' declarations have been:
Year | First Prize | Second Prize | Third Prize | Lightning |
---|---|---|---|---|
1998 | Cilk Cilk Cilk is a general-purpose programming language designed for multithreaded parallel computing. The commercial instantiation is Intel Cilk Plus.-Design:... |
OCaml Objective Caml OCaml , originally known as Objective Caml, is the main implementation of the Caml programming language, created by Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy and others in 1996... |
||
1999 | OCaml Objective Caml OCaml , originally known as Objective Caml, is the main implementation of the Caml programming language, created by Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy and others in 1996... |
Haskell Haskell (programming language) Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the... |
||
2000 | OCaml Objective Caml OCaml , originally known as Objective Caml, is the main implementation of the Caml programming language, created by Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy and others in 1996... |
OCaml Objective Caml OCaml , originally known as Objective Caml, is the main implementation of the Caml programming language, created by Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy and others in 1996... |
||
2001 | Haskell Haskell (programming language) Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the... |
Dylan | ||
2002 | OCaml Objective Caml OCaml , originally known as Objective Caml, is the main implementation of the Caml programming language, created by Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy and others in 1996... |
C C (programming language) C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system.... |
||
2003 | C++ C++ C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell... |
C++ C++ C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell... |
OCaml Objective Caml OCaml , originally known as Objective Caml, is the main implementation of the Caml programming language, created by Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy and others in 1996... |
|
2004 | Haskell Haskell (programming language) Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the... |
Haskell Haskell (programming language) Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the... and C++ C++ C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell... |
Java Java (programming language) Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities... and C++ C++ C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell... |
|
2005 | Haskell Haskell (programming language) Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the... |
Dylan | Haskell Haskell (programming language) Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the... |
|
2006 | 2D | D D (programming language) The D programming language is an object-oriented, imperative, multi-paradigm, system programming language created by Walter Bright of Digital Mars. It originated as a re-engineering of C++, but even though it is mainly influenced by that language, it is not a variant of C++... |
Assembly Assembly language An assembly language is a low-level programming language for computers, microprocessors, microcontrollers, and other programmable devices. It implements a symbolic representation of the machine codes and other constants needed to program a given CPU architecture... |
|
2007 | C++ C++ C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell... |
Perl Perl Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular... |
||
2008 | Java Java (programming language) Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities... |
ML | ||
2009 | C++ C++ C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell... |
Java Java (programming language) Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities... |
ML | |
2010 | C++ C++ C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell... , Haskell Haskell (programming language) Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the... , Python Python (programming language) Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive... |
Sage | ||
2011 | F# | Shell Unix shell A Unix shell is a command-line interpreter or shell that provides a traditional user interface for the Unix operating system and for Unix-like systems... and C++ C++ C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell... |
Perennial Teams
- The Al-Gore-Rhythms (aka The Doug Boat)
- The Caml Riders
- Frictionless Bananas
- DylanHackers 2005 report
- O Caml, My Caml
- Team Smartass
- Sir Bedevere the Wise
External links
- Most current contest site
- 1998 contest site
- Mirror of 1998 contest task
- (Partial) mirror of the 1999 contest site
- 2000 contest site
- 2001 contest site
- 2002 contest site
- 2003 contest site
- 2004 contest site
- 2005 contest site
- 2006 contest site
- 2007 contest site
- 2008 contest site
- 2009 contest site
- ICFP Programming Contest History (Ward CunninghamWard CunninghamHoward G. "Ward" Cunningham is an American computer programmer who developed the first wiki. A pioneer in both design patterns and Extreme Programming, he started programming the software WikiWikiWeb in 1994 and installed it on the website of his software consultancy, Cunningham & Cunningham , on...
's WikiWikiA wiki is a website that allows the creation and editing of any number of interlinked web pages via a web browser using a simplified markup language or a WYSIWYG text editor. Wikis are typically powered by wiki software and are often used collaboratively by multiple users. Examples include...
) - Programming geeks fight to the finish (CNET)
- Fiction-filled computer code mystery peppered with 'ancient' puzzles (Pittsburgh Post-GazettePittsburgh Post-GazetteThe Pittsburgh Post-Gazette, also known simply as the "PG," is the largest daily newspaper serving metropolitan Pittsburgh, Pennsylvania, USA.-Early history:...
) - Video of 2006 contest results
- Video of 2007 contest results
- Video of 2008 contest results
- 2007 contest written report
Ant War game
- http://www.ant-wars.net/ - Homepage
- http://sourceforge.net/projects/formicidae/ - The project at sourceforge.net
- http://alliance.seas.upenn.edu/~plclub/cgi-bin/contest/ The official page for the task at the 2004 ICFP Programming Contest