Soutěž v programování ICFP

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 5. července 2022; kontroly vyžadují 9 úprav .

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 .

Úkoly

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.

Vítězové

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

Viz také

Poznámky

  1. Antomata – Jazyk mravenčích válek Archivováno 29. září 2007.
  2. Soutěž v programování ICFP se bude konat tento víkend – Galois, Inc.  (anglicky) . Archivováno z originálu 26. listopadu 2015, Galois, Inc. Získáno 26. listopadu 2015.
  3. 2D je umělý jazyk vynalezený pro soutěž v roce 2006. Vítězové používali C++ , Haskell , Python , Bash , 2D a nejmenovaný proprietární jazyk používaný společností Google Inc. (nyní Alphabet).
  4. http://web.cecs.pdx.edu/~sheard/2008IcfpContest/ Archivováno 8. dubna 2011 na Wayback Machine – přístup 23. září 2009
  5. http://www.vimeo.com/6613815 Archivováno 9. listopadu 2012 na Wayback Machine – přístup 23. září 2009
  6. ICFP Programming Contest 2012  (anglicky)  (downlink) . icfpcontest.org . Získáno 13. září 2012. Archivováno z originálu 21. dubna 2012.
  7. ICFP Programming Contest 2013 (downlink) . Datum přístupu: 16. října 2013. Archivováno z originálu 16. října 2013. 
  8. Soutěž v programování ICFP 2016
  9. ICFP Programming Contest 2017 . Získáno 29. května 2021. Archivováno z originálu dne 5. března 2021.
  10. ICFP Programming Contest 2018 . Staženo 16. května 2020. Archivováno z originálu dne 31. října 2020.
  11. Konečné výsledky  . ICFP Programming Contest 2019 (20. srpna 2019). Získáno 15. července 2020. Archivováno z originálu dne 7. listopadu 2020.
  12. Ceny a zprávy ICFP Programming Contest  ( 26. srpna 2020). Získáno 29. května 2021. Archivováno z originálu dne 2. června 2021.

Stálé zúčastněné týmy

Odkazy

Hra Ant War