ICFP Programming Contest är en internationell programmeringstävling som hålls årligen i juni-juli sedan 1998. Resultaten av tävlingen tillkännages vid den internationella konferensen om funktionell programmering .
Kommandon kan vara av valfri storlek och använda valfritt programmeringsspråk (eller flera språk). Det finns inga deltagaravgifter. Deltagarna får 72 timmar på sig att slutföra uppgifterna och skicka in sina lösningar via Internet . Ibland finns det en 24-timmars blitzturnering.
Vinnarna har den särskilda rätten att hävda att deras föredragna språk är "den kräsna hackarens val". Ett av målen med tävlingen är alltså att kunna visa på möjligheterna med programmeringsspråket och verktygen som deltagaren i tävlingen använder. Topppristagare har tidigare använt språk som Haskell , OCaml , C++ , Cilk och Java för att lösa problem .
År | Arrangör | En uppgift |
---|---|---|
1998 | Massachusetts Institute of Technology | Skriv ett program som simulerar en grodd , ett slags tick-tac-toe- spel . De presenterade programmen var uppdelade på första och andra plats. |
1999 | Harvard Universitet | Optimering av falluttryck (i beskrivningen av uppgiften stod det om ett textuppdrag , men i själva verket reducerades uppgiften till att optimera beskrivningen av ett sådant spel). |
2000 | Cornell University | Implementera strålväg med Postscript- liknande syntax. |
2001 | INRIA Rocquencourt | Optimering av HTML -liknande märkningsspråk genom att eliminera onödiga mellanslag, taggar, etc. |
2002 | OGI School of Science and Engineering | Implementera robotar som kan spela mot varandra i ett spel som Sokoban . |
2003 | Chalmers tekniska högskola | Implementera robotar som kan köra en bil i högsta möjliga hastighet på banor av varierande komplexitet. |
2004 | University of Pennsylvania | Myrkoloni. Skapa en koloni som kan leverera mat till myrstacken snabbare och undvika andra myrarter. Lösningen var statsmaskinen. Uppgiften anpassades senare till Ant Wars strategiprogrammeringsspel med Antomata, [1] beskrivningsspråk för finita tillståndsmaskiner . |
2005 | PLT- gruppen | Implementera bots för spelet "Cops & Robbers". Lösningen blev två kontrollprogram, det ena för en rånarbot vars uppgift var att råna alla banker i närheten utan att åka fast av polisen, det andra för en polisbot som fångar rånare. |
2006 | Carnegie Mellon University | Implementera en virtuell maskin för att köra UMIX- operativsystemet som tillhandahålls av arrangörerna. Knäck sedan det med nya programmeringsspråk med ovanlig syntax, som 2D och den romerska versionen av BASIC . Många minimysterier med förenklade versioner eller parodier på tidigare spel. |
2007 | Utrecht universitet | Implementera en virtuell tvåstegsmaskin som exekverar en DNA-liknande sträng för att få en bild. För en given sträng, hitta ett prefix som, när det läggs till strängen, kommer att producera en bild som är mest lik målet. |
2008 | Portland State University och University of Chicago | Roverkontrollsystemet som implementerar återgången till basen. Det krävs för att undvika hinder och fiender. |
2009 | University of Kansas | Satellitkontroll i jordens omloppsbana: övergångar mellan banor och dockning med andra satelliter. |
2010 | Leipzig University of Applied Science , Tyskland | Internationell produktion av fordon och bränslen. |
2011 | Tohoku University , Japan | Programmera en dator med 256 "slots" för att besegra en motståndare med antalet platser som återstår i slutet av en match. Mellan deltagarnas beslut arrangeras en turnering på två nivåer. |
2012 | University of St. Andrews , Skottland | Implementera artificiell intelligens för ett spel som Boulder Dash . |
2013 | Microsoft Research , USA | Välj en aritmetisk-logisk funktion med hjälp av exempel på parametrar och utvärden. |
2014 | Oxford universitet | Skapa ett program för att slutföra en labyrint som liknar spelet Pac-Man . |
2015 | Galois [2] , USA | Skriv ett program för att slutföra ett spel som liknar Tetris . |
2016 | University of Electro-Communications, Tokyo | Skapa ett program för att återställa origami- svepet från utseendet på den monterade platta figuren. |
2017 | University of Edinburgh | Skapa ett program för att spela en analog av Ticket to Ride. |
2018 | Rochester Institute of Technology , USA | Skapa ett program som genererar kommandon för nanobotar som måste montera, demontera eller återmontera givna 3D-objekt, vilket minimerar energiförbrukningen. |
2019 | Yale-NUS College och National University of Singapore , Singapore | Skapa ett program som styr en målarrobot som måste täcka alla celler på nivåkartan. Målet är att täcka hela ytan av nivån på minsta möjliga tid genom att samla och applicera olika boosters utspridda på kartan. |
2020 | SKB Kontur | Implementera en virtuell maskin enligt specifikationen från utomjordingar, kör en spelserver mottagen från utomjordingar på den, förstå spelets regler (tvådimensionell rymdstrid i planetarisk omloppsbana med diskret fysik på Chebyshev-avstånd, med kommandon: acceleration, skott , division och självdetonation), skriv en bot för att delta i mästerskapet för det här spelet. |
Priset är en liten summa pengar som gör att vinnaren kan kompensera kostnaderna för att delta i ICFP-konferensen. Juryn delar ut flera priser:
Första pris [Språk 1] som ett programmeringsverktyg för smarta hackare. Andrapris [Språk 2] som ett bekvämt verktyg för att utveckla många applikationer. Tredje pris [Språk 3] är inte heller för löpande. Vinnare av Lightning Division [Språk L] lämpar sig väl för snabb prototypframställning. Jurypris [Team X] är en väldigt cool grupp hackare.Om vinnarna använde mer än ett språk kommer de att nominera ett eller två av de använda språken.
År | Första pris | Andrapris | Tredje pris | "Blixt" |
---|---|---|---|---|
1998 | Cilk | Ocaml | ||
1999 | Ocaml | Haskell | - | |
2000 | Ocaml | Ocaml | ||
2001 | Haskell | Dylan | ||
2002 | Ocaml | C | - | |
2003 | C++ | C++ | Ocaml | |
2004 | Haskell | Haskell och C++ | Java och C++ | |
2005 | Haskell | Dylan | Haskell | |
2006 | 2D [3] | D | assembleringsspråk | |
2007 | C++ | Perl | ingen vinnare | |
2008 | Java | ML [4] | ||
2009 | C++ | Java | ML [5] | |
2010 | C++ , Haskell , Python | Salvia | ||
2011 [6] | F# | Shell och C++ | ||
2012 | C++ | |||
2013 [7] | Java, C#, C++, PHP, Ruby och Haskell | C# , C++ | ||
2014 | Haskell | |||
2015 | C++, Java, C#, PHP, Ruby och Haskell | |||
2016 [8] | Java , C++ , C# , PHP , Haskell | C++ , Ruby , Python , Haskell , Java , JavaScript | Ocaml | |
2017 [9] | C++ | C++ | Ocaml | |
2018 [10] | Rost | C++ , Python , Ruby , JavaScript , Bash och SQL | Ocaml | |
2019 [11] | Rost | C++ | C++ och Haskell | |
2020 [12] | Pytonorm | C++ (första vinnare), Rust (andra vinnare) | Haskell |
Ant War-spel
Programmeringstävlingar | |
---|---|
Konkurrens | |
Organisationer |