ICFP-programmeringskonkurrencen er en international programmeringskonkurrence, der afholdes årligt i juni-juli siden 1998. Resultaterne af konkurrencen offentliggøres på den internationale konference om funktionel programmering .
Kommandoer kan være af enhver størrelse og bruge et hvilket som helst programmeringssprog (eller flere sprog). Der er ingen deltagergebyrer. Deltagerne får 72 timer til at udføre opgaverne og indsende deres løsninger via internettet . Nogle gange er der en 24-timers blitz-turnering.
Vinderne har den særlige ret til at hævde, at deres foretrukne sprog er "den kræsne hackers valg". Et af målene med konkurrencen er således at kunne vise mulighederne i det programmeringssprog og værktøjer, som deltageren i konkurrencen bruger. Toppræmievindere har tidligere brugt sprog som Haskell , OCaml , C++ , Cilk og Java til at løse problemer .
År | Arrangør | En opgave |
---|---|---|
1998 | Massachusetts Tekniske Institut | Skriv et program, der simulerer en spire , en slags tic-tac-toe- leg . De præsenterede programmer var opdelt i første- og andenpladser. |
1999 | Harvard Universitet | Optimering af kasusudtryk (i beskrivelsen af opgaven stod der om en tekstquest , men faktisk blev opgaven reduceret til at optimere beskrivelsen af sådan et spil). |
2000 | Cornell University | Implementer strålesti ved hjælp af Postscript - lignende syntaks. |
2001 | INRIA Rocquencourt | Optimering af det HTML -lignende opmærkningssprog ved at eliminere unødvendige mellemrum, tags osv. |
2002 | OGI School of Science and Engineering | Implementer robotter, der kan spille mod hinanden i et spil som Sokoban . |
2003 | Chalmers Tekniske Universitet | Implementer robotter, der er i stand til at køre en bil med den højest mulige hastighed på baner af varierende kompleksitet. |
2004 | University of Pennsylvania | Myrekoloni. Skab en koloni, der kan levere mad til myretuen hurtigere og undgå andre myrearter. Løsningen var statsmaskinen. Opgaven blev senere tilpasset til Ant Wars strategiprogrammeringsspillet med Antomata, [1] finite state machine description language . |
2005 | PLT gruppe | Implementer bots til spillet "Cops & Robbers". Løsningen var to kontrolprogrammer, det ene til en røverbot, hvis opgave var at røve alle banker i nærheden uden at blive fanget af politiet, det andet til en politibot, der fanger røvere. |
2006 | Carnegie Mellon University | Implementer en virtuel maskine til at køre UMIX -operativsystemet leveret af arrangørerne. Knæk det derefter ved hjælp af nye programmeringssprog med usædvanlig syntaks, såsom 2D og romertalsversionen af BASIC . Mange mini-mysterier med forenklede versioner eller parodier af tidligere spil. |
2007 | Utrecht Universitet | Implementer en to-trins virtuel maskine, der udfører en DNA-lignende streng for at få et billede. For en given streng skal du finde et præfiks, der, når det føjes til strengen, vil producere et billede, der minder mest om målet. |
2008 | Portland State University og University of Chicago | Rover-kontrolsystemet, der implementerer tilbagevenden til basen. Det er nødvendigt for at undgå forhindringer og fjender. |
2009 | University of Kansas | Satellitkontrol i kredsløb om jorden: overgange mellem baner og docking med andre satellitter. |
2010 | Leipzig University of Applied Science , Tyskland | International produktion af køretøjer og brændstoffer. |
2011 | Tohoku Universitet , Japan | Programmering af en computer med 256 "slots" for at besejre en modstander med antallet af pladser tilbage i slutningen af en kamp. Mellem deltagernes beslutninger arrangeres en to-niveau turnering. |
2012 | University of St. Andrews , Skotland | Implementer kunstig intelligens til et spil som Boulder Dash . |
2013 | Microsoft Research , USA | Vælg en aritmetisk-logisk funktion ved hjælp af eksempler på parametre og outputværdier. |
2014 | Oxford Universitet | Opret et program til at fuldføre en labyrint, der ligner spillet Pac-Man . |
2015 | Galois [2] , USA | Skriv et program til at fuldføre et spil, der ligner Tetris . |
2016 | University of Electro-Communications, Tokyo | Opret et program til at genoprette origami -sweep fra udseendet af den samlede flade figur. |
2017 | University of Edinburgh | Opret et program til afspilning af en analog af Ticket to Ride. |
2018 | Rochester Institute of Technology , USA | Opret et program, der genererer kommandoer til nanobots, der skal samle, adskille eller samle givne 3D-objekter, hvilket minimerer energiforbruget. |
2019 | Yale-NUS College og National University of Singapore , Singapore | Lav et program, der styrer en malerrobot, der skal dække alle cellerne på niveaukortet. Målet er at dække hele overfladen af niveauet på et minimum af tid ved at indsamle og anvende forskellige boostere spredt rundt på kortet. |
2020 | SKB Kontur | Implementer en virtuel maskine i henhold til specifikationen modtaget fra aliens, kør en spilserver modtaget fra aliens på den, forstå spillets regler (todimensionel rumkamp i planetarisk kredsløb med diskret fysik på Chebyshev-afstande, med kommandoer: acceleration, skud , division og selvdetonation), skriv en bot for at deltage i mesterskabet for dette spil. |
Prisen er et lille beløb, der giver vinderen mulighed for at kompensere for omkostningerne ved at deltage i ICFP-konferencen. Juryen uddeler flere priser:
Førstepræmie [Sprog 1] som et programmeringsværktøj til kloge hackere. Anden præmie [Sprog 2] som et praktisk værktøj til at udvikle mange applikationer. Tredje præmie [Sprog 3] er heller ikke for løbende. Vinder af Lightning Division [Sprog L] er velegnet til hurtig prototyping. Juryens pris [Team X] er en meget sej gruppe af hackere.Hvis vinderne brugte mere end ét sprog, vil de nominere et eller to af de anvendte sprog.
År | Førstepræmie | Anden præmie | Tredje præmie | "Lyn" |
---|---|---|---|---|
1998 | Cilk | OKaml | ||
1999 | OKaml | Haskell | - | |
2000 | OKaml | OKaml | ||
2001 | Haskell | Dylan | ||
2002 | OKaml | C | - | |
2003 | C++ | C++ | OKaml | |
2004 | Haskell | Haskell og C++ | Java og C++ | |
2005 | Haskell | Dylan | Haskell | |
2006 | 2D [3] | D | samlesprog | |
2007 | C++ | Perl | ingen vinder | |
2008 | Java | ML [4] | ||
2009 | C++ | Java | ML [5] | |
2010 | C++ , Haskell , Python | Salvie | ||
2011 [6] | F# | Shell og C++ | ||
2012 | C++ | |||
2013 [7] | Java, C#, C++, PHP, Ruby og Haskell | C# , C++ | ||
2014 | Haskell | |||
2015 | C++, Java, C#, PHP, Ruby og Haskell | |||
2016 [8] | Java , C++ , C# , PHP , Haskell | C++ , Ruby , Python , Haskell , Java , JavaScript | OKaml | |
2017 [9] | C++ | C++ | OKaml | |
2018 [10] | Rust | C++ , Python , Ruby , JavaScript , Bash og SQL | OKaml | |
2019 [11] | Rust | C++ | C++ og Haskell | |
2020 [12] | Python | C++ (første vinder), Rust (anden vinder) | Haskell |
Ant War spil
Programmeringskonkurrencer | |
---|---|
Konkurrence | |
Organisationer |