Concurs de programare ICFP

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 5 iulie 2022; verificările necesită 9 modificări .

Concursul de programare ICFP este o competiție internațională de programare care se desfășoară anual în iunie-iulie din 1998. Rezultatele competiției sunt anunțate la Conferința Internațională de Programare Funcțională .

Comenzile pot fi de orice dimensiune și pot folosi orice limbaj de programare (sau mai multe limbi). Nu există taxe de participare. Participanții au la dispoziție 72 de ore pentru a finaliza sarcinile și a-și trimite soluțiile prin Internet . Uneori există un turneu blitz de 24 de ore.

Câștigătorii au dreptul special de a pretinde că limba lor preferată este „alegerea hackerului pretențios”. Astfel, unul dintre scopurile competiției este acela de a putea arăta posibilitățile limbajului de programare și instrumentele utilizate de participantul la concurs. Câștigătorii premiilor de top au folosit anterior limbaje precum Haskell , OCaml , C++ , Cilk și Java pentru a rezolva probleme .

Sarcini

An Organizator O sarcină
1998 Institutul de tehnologie din Massachusetts Scrieți un program care simulează un vlăstar , un fel de joc tic-tac-toe . Programele prezentate au fost împărțite pe primul și al doilea loc.
1999 Universitatea Harvard Optimizarea expresiilor de caz (în descrierea sarcinii se spunea despre o căutare text , dar de fapt sarcina s-a redus la optimizarea descrierii unui astfel de joc).
2000 Universitatea Cornell Implementați calea fasciculului folosind sintaxa de tip Postscript .
2001 INRIA Rocquencourt Optimizarea limbajului de marcare asemănător HTML prin eliminarea spațiilor inutile, etichetelor etc.
2002 OGI Scoala de Stiinte si Inginerie Implementați roboți care se pot juca unul împotriva celuilalt într-un joc precum Sokoban .
2003 Universitatea Tehnică Chalmers Implementați roboți capabili să conducă o mașină la cea mai mare viteză posibilă pe piste de complexitate diferită.
2004 Universitatea din Pennsylvania Colonie de furnici. Creați o colonie care poate livra hrană la furnicar mai repede și evita alte specii de furnici. Soluția a fost mașina statului. Sarcina a fost ulterior adaptată în jocul de programare de strategie Ant Wars cu Antoma, [1] limbaj de descriere a mașinii cu stări finite .
2005 grupul PLT Implementați roboți pentru jocul „Cops & Robbers”. Soluția au fost două programe de control, unul pentru un robot de tâlhar a cărui sarcină era să jefuiască toate băncile din vecinătate fără a fi prins de poliție, celălalt pentru un robot de poliție care prinde hoți.
2006 Universitatea Carnegie Mellon Implementați o mașină virtuală pentru a rula sistemul de operare UMIX oferit de organizatori. Apoi spargeți-l folosind noi limbaje de programare cu sintaxă neobișnuită, cum ar fi 2D și versiunea cu cifre romane a BASIC . Multe mini-mistere cu versiuni simplificate sau parodii ale jocurilor anterioare.
2007 Universitatea din Utrecht Implementați o mașină virtuală în două etape care execută un șir asemănător ADN-ului pentru a obține o imagine. Pentru un șir dat, găsiți un prefix care, atunci când este adăugat la șir, va produce o imagine care este cel mai asemănătoare cu ținta.
2008 Universitatea de Stat din Portland și Universitatea din Chicago Sistemul de control rover care implementează întoarcerea la bază. Este necesar pentru a evita obstacolele și inamicii.
2009 Universitatea din Kansas Control prin satelit pe orbita Pământului: tranziții între orbite și andocare cu alți sateliți.
2010 Universitatea de Științe Aplicate din Leipzig , Germania Producția internațională de vehicule și combustibili.
2011 Universitatea Tohoku , Japonia Programarea unui computer cu 256 de „slot” pentru a învinge un adversar cu numărul de sloturi rămase la sfârșitul unui meci. Între deciziile participanților, se organizează un turneu pe două niveluri.
2012 Universitatea St. Andrews , Scoția Implementați inteligența artificială pentru un joc precum Boulder Dash .
2013 Microsoft Research , SUA Selectați o funcție aritmetică-logică folosind exemple de parametri și valori de ieșire.
2014 Universitatea Oxford Creați un program pentru a finaliza un labirint similar cu jocul Pac-Man .
2015 Galois [2] , SUA Scrieți un program pentru a finaliza un joc similar cu Tetris .
2016 Universitatea de Electro-Comunicații, Tokyo Creați un program pentru a restabili matura origami din aspectul figurii plate asamblate.
2017 Universitatea din Edinburgh Creați un program pentru redarea unui analog al Ticket to Ride.
2018 Institutul de Tehnologie Rochester , SUA Creați un program care generează comenzi pentru nanoboții care trebuie să asambleze, să dezasamblați sau să reasamblați anumite obiecte 3D, reducând la minimum energia cheltuită.
2019 Colegiul Yale-NUS și Universitatea Națională din Singapore , Singapore Creați un program care controlează un robot pictor care trebuie să acopere toate celulele hărții de nivel. Scopul este de a acoperi întreaga suprafață a nivelului într-un timp minim prin colectarea și aplicarea diverșilor amplificatori împrăștiați în jurul hărții.
2020 SKB Kontur Implementați o mașină virtuală conform specificației primite de la extratereștri, rulați un server de joc primit de la extratereștri pe ea, înțelegeți regulile jocului (bătălie spațială bidimensională pe orbită planetară cu fizică discretă la distanțe Chebyshev, cu comenzi: accelerare, împușcare , divizie și autodetonare), scrieți un bot pentru a participa la campionatul pentru acest joc.

Câștigători

Premiul este o sumă mică de bani care permite câștigătorului să compenseze costul participării la conferința ICFP. Juriul acordă mai multe premii:

Primul premiu [Limba 1] ca instrument de programare pentru hackeri astuți. Locul doi [Limba 2] ca instrument convenabil pentru dezvoltarea multor aplicații. Premiul III [Limba 3] , de asemenea, nu rulează prea mult. Câștigător al diviziei Lightning [Limba L] este potrivită pentru prototiparea rapidă. Premiul juriului [Team X] este un grup foarte tare de hackeri.

Dacă câștigătorii au folosit mai multe limbi, vor nominaliza una sau două dintre limbile folosite.

An Primul premiu Locul doi Premiul III "Fulger"
1998 Cilk OCaml
1999 OCaml Haskell -
2000 OCaml OCaml
2001 Haskell Dylan
2002 OCaml C -
2003 C++ C++ OCaml
2004 Haskell Haskell și C++ Java și C++
2005 Haskell Dylan Haskell
2006 2D [3] D limbaj de asamblare
2007 C++ Perl nici un câștigător
2008 Java ML [4]
2009 C++ Java ML [5]
2010 C++ , Haskell , Python Salvie
2011 [6] F# Shell și C++
2012 C++
2013 [7] Java, C#, C++, PHP, Ruby și Haskell C# , C++
2014 Haskell
2015 C++, Java, C#, PHP, Ruby și Haskell
2016 [8] Java , C++ , C# , PHP , Haskell C++ , Ruby , Python , Haskell , Java , JavaScript OCaml
2017 [9] C++ C++ OCaml
2018 [10] Rugini C++ , Python , Ruby , JavaScript , Bash și SQL OCaml
2019 [11] Rugini C++ C++ și Haskell
2020 [12] Piton C++ (primul câștigător), Rust (al doilea câștigător) Haskell

Vezi și

Note

  1. Antoma - The Language of Ant Wars Arhivat 29 septembrie 2007.
  2. Concursul de programare ICFP se va desfășura în acest weekend - Galois, Inc.  (engleză) . Arhivat din original pe 26 noiembrie 2015, Galois, Inc. Consultat la 26 noiembrie 2015.
  3. 2D este un limbaj artificial inventat pentru concursul din 2006. Câștigătorii au folosit C++ , Haskell , Python , Bash , 2D și un limbaj proprietar fără nume folosit de Google Inc. (acum Alphabet).
  4. http://web.cecs.pdx.edu/~sheard/2008IcfpContest/ Arhivat 8 aprilie 2011 la Wayback Machine - accesat 23 septembrie 2009
  5. http://www.vimeo.com/6613815 Arhivat 9 noiembrie 2012 la Wayback Machine - accesat 23 septembrie 2009
  6. Concursul de programare ICFP 2012  (engleză)  (downlink) . icfpcontest.org . Consultat la 13 septembrie 2012. Arhivat din original la 21 aprilie 2012.
  7. Concurs de programare ICFP 2013 (downlink) . Data accesului: 16 octombrie 2013. Arhivat din original pe 16 octombrie 2013. 
  8. Concurs de programare ICFP 2016
  9. Concurs de Programare ICFP 2017 . Preluat la 29 mai 2021. Arhivat din original la 5 martie 2021.
  10. Concurs de Programare ICFP 2018 . Preluat la 16 mai 2020. Arhivat din original la 31 octombrie 2020.
  11. Rezultate  finale . Concurs de programare ICFP 2019 (20 august 2019). Preluat la 15 iulie 2020. Arhivat din original la 7 noiembrie 2020.
  12. Premiile și rapoartele concursului de programare ICFP  ( 26 august 2020). Preluat la 29 mai 2021. Arhivat din original la 2 iunie 2021.

Echipe permanente participante

Link -uri

Joc Războiul furnicilor