Konkurs programowania ICFP
ICFP Programming Contest to międzynarodowy konkurs programistyczny organizowany corocznie w okolicach czerwca lub lipca od 1998 roku, którego wyniki ogłaszane są na Międzynarodowej Konferencji Programowania Funkcjonalnego .
Zespoły mogą być dowolnej wielkości i mogą być używane dowolne języki programowania. Nie ma również opłaty za wstęp. Uczestnicy mają 72 godziny na uzupełnienie i przesłanie zgłoszenia przez Internet. Często istnieje również 24-godzinny podział odgromowy.
Zwycięzcy zastrzegają sobie „prawo do przechwalania się”, twierdząc, że ich język jest „narzędziem programistycznym wybieranym przez dyskryminujących hakerów”. W związku z tym jednym z celów konkursu jest zaprezentowanie możliwości ulubionych języków programowania i narzędzi uczestników. Poprzedni zdobywcy pierwszej nagrody używali Haskell , OCaml , C++ , Cilk , Java , F# i Rust .
Na konkursy zazwyczaj nadesłanych jest około 300 prac.
Przeszłe zadania
Rok | Organizator | Opis |
---|---|---|
1998 | Université de Montréal i Massachusetts Institute of Technology | Napisz program, który odtwarza pousse , dziwną odmianę gry w kółko i krzyżyk. Programy uczestników zostały zgłoszone do turnieju w celu ustalenia programu pierwszego i drugiego miejsca. |
1999 | Uniwersytet Harwardzki | Zoptymalizować rozmiar instrukcji przypadków (zadanie konkursowe dotyczyło tekstowych gier przygodowych , ale w rzeczywistości zadaniem było zoptymalizowanie rozmiaru opisu takiej gry). |
2000 | Uniwersytet Cornella | Zaimplementuj śledzenie promieni przy użyciu składni podobnej do Postscriptu. |
2001 | INRIA Rocquencourt | Zoptymalizuj rozmiar języka znaczników podobnego do HTML, usuwając niepotrzebne spacje, znaczniki i tak dalej. |
2002 | Szkoła Nauki i Inżynierii OGI | Zaimplementuj roboty grające przeciwko sobie w grę podobną do Sokoban . |
2003 | Uniwersytet Chalmersa | Zaimplementuj roboty prowadzące samochód tak szybko, jak to możliwe, po różnych torach wyścigowych. |
2004 | Uniwersytet Pensylwanii | Zaprojektuj kolonię mrówek, która przywiezie najwięcej cząstek jedzenia z powrotem do mrowiska, jednocześnie odpierając mrówki innego gatunku. Zgłoszenie konkursowe generowałoby opis mrówki na maszynie stanowej: w zasadzie zgłoszenia mogły być pisane odręcznie. Później zadanie zostało zaadaptowane do Ant Wars, strategiczno - programistycznej , w której każdy uczestnik jest gatunkiem mrówki . Następnie uczestnicy, w języku zwanym Antomata, programują skończoną maszynę stanów , aby funkcjonowała jako mózg każdej mrówki. Mózg mrówki następnie kontroluje mrówkę, aby znaleźć i zebrać pożywienie, aby przynieść je do domu , aby odeprzeć napastników lub zrobić ślady feromonów. |
2005 | grupa PTL | Zaimplementuj „boty” do gry „Gliniarze i złodzieje”: uczestnicy muszą napisać program kontrolny, który poprowadzi Robber-Bota przez cichą miejską dzielnicę z misją obrabowania każdego banku, nie dając się złapać, oraz program kontrolny dla Bot poświęcony powstrzymaniu go. |
2006 | Carnegie Mellon University | Zaimplementuj maszynę wirtualną z systemem operacyjnym (zwanym UMIX) dostarczonym przez jurorów i złam ją, używając nowych języków programowania o niekonwencjonalnej składni i semantyce, takich jak 2D i wersja języka BASIC wykorzystująca cyfry rzymskie . Wiele zagadek było miniaturowymi wersjami lub parodiami poprzednich konkursów. |
2007 | Uniwersytet w Utrechcie | Zaimplementuj dwuetapową maszynę wirtualną, która wykonuje łańcuch podobny do DNA w celu wytworzenia obrazu. Następnie, biorąc pod uwagę ciąg wejściowy dla tej maszyny, znajdź przedrostek, który po dodaniu do tego ciągu daje obraz jak najbardziej zbliżony do danego obrazu docelowego. |
2008 | Portland State University i University of Chicago | Zapewnij system sterowania łazikiem marsjańskim, który poprowadzi go do bazy domowej, unikając przeszkód i wrogów. |
2009 | Uniwersytet Kansas | Kontroluj satelitę, aby poruszać się między określonymi orbitami i spotykać się z innymi satelitami. |
2010 | Wyższa Szkoła Nauk Stosowanych w Lipsku , Niemcy | Międzynarodowa produkcja samochodów i paliw. |
2011 | Uniwersytet Tohoku w Japonii | Zaprogramuj komputer z 256 „przedziałami”, aby przeżył przeciwnika pod względem liczby pozostałych miejsc na koniec meczu. Zgłoszenia obejmują pliki wykonywalne, które są wprowadzane do turnieju dwufazowego. |
2012 | Uniwersytet St Andrews w Szkocji | Zaprogramuj sztuczną inteligencję do gry podobnej do Boulder Dash . |
2013 | Badania Microsoftu | Zgadnij implementację funkcji czarnej skrzynki zaimplementowanej w prostym języku funkcjonalnym, wysyłając zapytanie do usługi internetowej. |
2014 | University of Oxford i Well-Typed LLP | Napisz programy AI dla gry podobnej do pacmana, w instrukcjach maszynowych SECD dla pacman i 8-bitowych instrukcjach montażu maszyn dla czterech duchów. |
2015 | Galois | Napisz grę typu AI dla Tetrisa na sześciokątnym polu siatki, która osadza tajne frazy w sekwencji ruchów. |
2016 | Wyższa Szkoła Elektrokomunikacji | Napisz sztuczną inteligencję, aby rozwiązać abstrakcyjne origami . |
2017 | Uniwersytet w Edynburgu | Napisz sztuczną inteligencję do gry, w której gracze po kolei przejmują części trasy na mapie, a wygrywa ten, który ma najlepszy zasięg. Istnieją również trzy rozszerzenia głównego trybu gry, z których dowolną liczbę można włączyć na mapie. |
2018 | Instytut Technologii w Rochester | Generuj ślady nanobotów, aby konstruować, niszczyć i rekonstruować docelowe obiekty 3D, jednocześnie minimalizując zużycie energii. |
2019 | Yale-NUS College i Narodowy Uniwersytet Singapuru | Worker-Wrappers przeciwko Bit Rot. |
2020 | Kontur SKB | Zbuduj maszynę wirtualną zgodnie ze specyfikacją kosmitów , uruchom serwer gier dostarczony przez kosmitów na tej maszynie wirtualnej, eksploruj grę (bitwa kosmiczna 2D na orbicie planety z odległością Czebyszewa, z poleceniami przyspieszenia, strzelania, podziału i detonacji), wykonaj inżynierię wsteczną protokołu gry i utwórz bota, aby grać w tę grę. |
2021 | Alexa Langa i Jaspera Van der Jeugta | Manipuluj figurą podobną do mechanicznego połączenia , aby zmieścić się w otworze w ścianie . |
2022 | Alperena Kelesa | Zmień konfigurację wstępnie wypełnionego płótna w obraz. |
Nagrody
Nagrody mają skromną wartość pieniężną i mają przede wszystkim pomóc zwycięzcom w dotarciu na konferencję, na której wręczane są nagrody, a sędziowie składają następujące oświadczenia:
- Pierwsza nagroda
- [Język 1] to narzędzie programistyczne wybierane przez wybrednych hakerów.
- Druga nagroda
- [Język 2] to znakomite narzędzie programistyczne do wielu zastosowań.
- Trzecia nagroda
- [Język 3] również nie jest zbyt nędzna.
- Zwycięzca działu błyskawicy
- [język L] doskonale nadaje się do szybkiego prototypowania.
- Nagrodą sędziów
- [Drużyna X] jest niezwykle fajna banda hakerów.
Jeśli zwycięska praca obejmuje kilka języków, zwycięzcy proszeni są o nominację jednego lub dwóch. Języki wymienione w oświadczeniach sędziów to:
Zobacz też
Referencje i notatki
- ^ „Tablica wyników konkursu programistycznego ICFP” . Źródło 23 września 2012 r .
- ^ https://alliance.seas.upenn.edu/~plclub/cgi-bin/contest/results.php
- ^ „Antomata - język wojen mrówek” . Zarchiwizowane od oryginału w dniu 2007-09-29 . Źródło 2007-11-25 .
- ^ „Konkurs się rozpoczyna” . Konkurs programistyczny ICFP 2019 . 2019-06-21 . Źródło 2020-07-15 .
- ^ Ostateczne wyniki konkursu programistycznego ICFP'99
- ^ a b Konkursy w 1999 i 2002 roku miały podział błyskawicy, ale bez oddzielnej nagrody. Zwycięzcom tej kategorii przyznano nagrody sędziowskie.
- ^ Trzeci doroczny konkurs programistyczny ICFP
- ^ Czwarty konkurs programistyczny ICFP
- ^ Siódmy doroczny konkurs programowania ICFP
- ^ Ósmy doroczny konkurs programistyczny ICFP
- ^ 2D był językiem zabawek wymyślonym na potrzeby konkursu w 2006 roku. Zwycięski zespół używał języków C++ , Haskell , Python , Bash i 2D.
- ↑ Konkurs z 2007 roku miał błyskawiczny podział, ale ponieważ po 24 godzinach nie było wyraźnego lidera, sędziowie postanowili nie wybierać zwycięzcy.
- ^ Wyniki konkursu programistycznego ICFP 2008
- ^ http://www.vimeo.com/6613815 - dostęp 23 września 2009
- ^ Konkurs programistyczny ICFP 2010 (wideo)
- ^ Konkurs programistyczny ICFP 2011
- ^ Konkurs programistyczny ICFP 2012
- ^ „Konkurs programistyczny ICFP 2013” . Zarchiwizowane od oryginału w dniu 2013-10-16 . Źródło 2013-08-15 .
- ^ Konkurs programistyczny ICFP 2014
- ^ Konkurs programistyczny ICFP 2015
- ^ Konkurs programistyczny ICFP 2016
- ^ Konkurs programistyczny ICFP 2017
- ^ Konkurs programistyczny ICFP 2018
- ^ „Ostateczne wyniki” . Konkurs programistyczny ICFP 2019 . 2019-08-20 . Źródło 2020-07-15 .
- ^ „Nagrody i raporty z konkursów programistycznych ICFP” . 2020-08-26. Zarchiwizowane od oryginału w dniu 2021-12-21 . Źródło 2021-05-29 .
- ^ Konkurs programistyczny ICFP 2021
- ^ Konkurs programistyczny ICFP 2022