ICFP Programming Contest je mezinárodní programátorská soutěž, která se koná každoročně v červnu až červenci od roku 1998. Výsledky soutěže jsou vyhlašovány na Mezinárodní konferenci funkčního programování .
Příkazy mohou být libovolné velikosti a používat jakýkoli programovací jazyk (nebo více jazyků). Neplatí se žádné účastnické poplatky. Účastníci mají 72 hodin na dokončení úkolů a odeslání svých řešení přes internet . Někdy se koná 24hodinový bleskový turnaj.
Vítězové mají zvláštní právo tvrdit, že jejich preferovaný jazyk je "volba vybíravého hackera". Jedním z cílů soutěže je tedy umět ukázat možnosti programovacího jazyka a nástrojů, které účastník soutěže používá. Vítězové hlavních cen již dříve používali k řešení problémů jazyky jako Haskell , OCaml , C++ , Cilk a Java .
Rok | Organizátor | Úkol |
---|---|---|
1998 | Massachusetts Institute of Technology | Napište program, který simuluje klíček , jakousi hru piškvorek . Prezentované programy byly rozděleny na první a druhá místa. |
1999 | Harvardská Univerzita | Optimalizace případových výrazů (v popisu úkolu se hovořilo o textovém questu , ale ve skutečnosti byl úkol zredukován na optimalizaci popisu takové hry). |
2000 | Cornell University | Implementujte cestu paprsku pomocí syntaxe podobné Postscriptu . |
2001 | INRIA Rocquencourt | Optimalizace značkovacího jazyka podobného HTML odstraněním zbytečných mezer, značek atd. |
2002 | OGI School of Science and Engineering | Implementujte roboty, kteří mohou hrát proti sobě ve hře jako Sokoban . |
2003 | Chalmersova technická univerzita | Implementujte roboty schopné řídit auto nejvyšší možnou rychlostí na tratích různé složitosti. |
2004 | University of Pennsylvania | Mravenčí kolonie. Vytvořte kolonii, která může rychleji doručit potravu do mraveniště a vyhnout se dalším druhům mravenců. Řešením byl státní automat. Úloha byla později adaptována do strategické programovací hry Ant Wars s Antomata, [1] jazykem pro popis konečných stavových strojů . |
2005 | skupina PLT | Implementujte roboty pro hru "Cops & Robbers". Řešením byly dva kontrolní programy, jeden pro lupičského bota, jehož úkolem bylo vyloupit všechny banky v okolí, aniž by ho policie chytila, a druhý pro policejního bota, který lupiče chytá. |
2006 | Univerzita Carnegie Mellon | Implementujte virtuální stroj pro provoz operačního systému UMIX poskytovaného organizátory. Pak to rozluštíte pomocí nových programovacích jazyků s neobvyklou syntaxí, jako je 2D a verze BASIC s římskými číslicemi . Mnoho minizáhad se zjednodušenými verzemi nebo parodiemi na předchozí hry. |
2007 | Utrechtská univerzita | Implementujte dvoufázový virtuální stroj, který spouští řetězec podobný DNA, aby získal obrázek. Pro daný řetězec najděte předponu, která po přidání do řetězce vytvoří obrázek, který je nejvíce podobný cíli. |
2008 | Portland State University a University of Chicago | Řídicí systém roveru, který realizuje návrat na základnu. Je nutné vyhýbat se překážkám a nepřátelům. |
2009 | University of Kansas | Satelitní ovládání na oběžné dráze Země: přechody mezi oběžnými dráhami a dokování s jinými satelity. |
2010 | Univerzita aplikovaných věd v Lipsku , Německo | Mezinárodní výroba vozidel a pohonných hmot. |
2011 | Univerzita Tohoku , Japonsko | Programování počítače s 256 „sloty“ tak, aby porazil soupeře podle počtu zbývajících slotů na konci zápasu. Mezi rozhodnutími účastníků je uspořádán dvouúrovňový turnaj. |
2012 | Univerzita St. Andrews , Skotsko | Implementujte umělou inteligenci pro hru jako Boulder Dash . |
2013 | Microsoft Research , USA | Vyberte aritmeticko-logickou funkci pomocí příkladů parametrů a výstupních hodnot. |
2014 | Oxfordská univerzita | Vytvořte program pro dokončení bludiště podobného hře Pac-Man . |
2015 | Galois [2] , USA | Napište program pro dokončení hry podobné Tetrisu . |
2016 | University of Electro-Communications, Tokio | Vytvořte program pro obnovení origami zametání ze vzhledu sestavené ploché figurky. |
2017 | University of Edinburgh | Vytvořte program pro hraní analogu Ticket to Ride. |
2018 | Rochester Institute of Technology , USA | Vytvořte program, který generuje příkazy pro nanoboty, kteří musí dané 3D objekty sestavit, rozebrat nebo znovu sestavit, čímž se minimalizuje vynaložená energie. |
2019 | Yale-NUS College a National University of Singapore , Singapur | Vytvořte program, který ovládá malířského robota, který musí pokrýt všechny buňky na mapě úrovní. Cílem je pokrýt celý povrch úrovně v minimálním množství času sbíráním a aplikací různých boosterů rozesetých po mapě. |
2020 | SKB Kontur | Implementujte virtuální stroj podle specifikace obdržené od mimozemšťanů, spusťte na něm herní server přijatý od mimozemšťanů, pochopte pravidla hry (dvourozměrná vesmírná bitva na oběžné dráze planet s diskrétní fyzikou na vzdálenostech Čebyšev, s příkazy: zrychlení, výstřel , divize a sebedetonace), napište robota, abyste se zúčastnili šampionátu pro tuto hru. |
Cena je malá částka, která umožňuje vítězi kompenzovat náklady na účast na konferenci ICFP. Porota uděluje několik ocenění:
První cena [Jazyk 1] jako programovací nástroj pro bystré hackery. Druhá cena [Jazyk 2] jako pohodlný nástroj pro vývoj mnoha aplikací. Třetí cena Jazyk [Language 3] také příliš neběží. Vítěz divize Lightning Jazyk [Language L] je vhodný pro rychlé prototypování. Cena poroty [Team X] je velmi cool skupina hackerů.Pokud vítězové používali více než jeden jazyk, nominují jeden nebo dva z použitých jazyků.
Rok | První cena | Druhá cena | Třetí cena | "Blesk" |
---|---|---|---|---|
1998 | Cilk | OCaml | ||
1999 | OCaml | Haskell | - | |
2000 | OCaml | OCaml | ||
2001 | Haskell | Dylan | ||
2002 | OCaml | C | - | |
2003 | C++ | C++ | OCaml | |
2004 | Haskell | Haskell a C++ | Java a C++ | |
2005 | Haskell | Dylan | Haskell | |
2006 | 2D [3] | D | jazyk symbolických instrukcí | |
2007 | C++ | Perl | žádný vítěz | |
2008 | Jáva | ML [4] | ||
2009 | C++ | Jáva | ML [5] | |
2010 | C++ , Haskell , Python | Šalvěj | ||
2011 [6] | F# | Shell a C++ | ||
2012 | C++ | |||
2013 [7] | Java, C#, C++, PHP, Ruby a Haskell | C# , C++ | ||
2014 | Haskell | |||
2015 | C++, Java, C#, PHP, Ruby a Haskell | |||
2016 [8] | Java , C++ , C# , PHP , Haskell | C++ , Ruby , Python , Haskell , Java , JavaScript | OCaml | |
2017 [9] | C++ | C++ | OCaml | |
2018 [10] | Rez | C++ , Python , Ruby , JavaScript , Bash a SQL | OCaml | |
2019 [11] | Rez | C++ | C++ a Haskell | |
2020 [12] | Krajta | C++ (první vítěz), Rust (druhý vítěz) | Haskell |
Hra Ant War
Programátorské soutěže | |
---|---|
Soutěž | |
Organizace |