ITPW

Regulamin konkursu "Internetowy Turniej Programów Walczących"

Tekstem pochyłym pisane są komentarze.

I. Zasady ogólne

  1. Organizatorami konkursu pod nazwą "Internetowy Turniej Programów Walczących", zwanego dalej Konkursem, są Koło Naukowe Informatyków Uniwersytetu Warszawskiego (KNI UW) działające przy Wydziale Matematyki, Informatyki i Mechaniki Uniwersytetu Warszawskiego oraz firma Biuro Usług Technicznych i Handlowych "EKOKAL" Ryszard Parys.
  2. Integralną częścią niniejszego regulaminu jest terminarz znajdujący się na stronie internetowej http://itpw.mimuw.edu.pl/terminarz.html, zwany dalej Terminarzem, a także umieszczone poniżej "Zasady organizacji zawodów"
  3. Konkurs przeprowadzony będzie w dniach podanych w terminarzu wyłącznie na stronach serwisu internetowego prowadzonego przez KNI UW pod adresem: http://itpw.mimuw.edu.pl/.

II. Uczestnictwo w Konkursie

  1. W Konkursie może wystartować każdy z wyjątkiem organizatorów i jurorów Konkursu. Uczestnictwo w Konkursie jest bezpłatne.
  2. Uczestnicy powinni rejestrować się w Serwisie pod własnym imieniem i nazwiskiem. Rejestracja możliwa jest także w trakcie trwania konkursu.

III. Zadanie konkursowe

  1. Zadaniem uczestników Konkursu jest samodzielne stworzenie programu rozwiązującego problem opisany w treści zadania, spełniającego ograniczenia wyznaczone w tym zadaniu, a także ograniczenia podane w "Zasadach organizacji zawodów" umieszczonych poniżej.
  2. Treść zadania zostanie ujawniona w terminie podanym w Terminarzu.
  3. Wraz z treścią zadania organizatorzy udostępniają uczestnikom program sędziego umożliwiający testowanie rozwiązań. Posiada on interfejs graficzny umożliwiający oglądanie przebiegu rozgrywki. Możliwe jest także uruchomienie rozgrywki z linii poleceń; jest to opisane w pliku README.html w paczce zawierającej ten program. W paczce znajdują się przykładowe programy grające w każdym z dostępnych języków programowania. Do przeprowadzania rozgrywek Konkursu jurorzy używają innego programu sędziego.
  4. Do obowiązku uczestnika należy śledzenie działu "Ogłoszenia" na forum, gdyż mogą tam pojawić się ważne doprecyzowania treści zadania.

IV. Nagrody

  1. W przypadku założenia przez jedną osobę więcej niż jednego konta w Serwisie w celu uczestnictwa w Konkursie, osoba taka uzyskuje prawo wyłącznie do jednej nagrody przewidzianej dla zwycięzców Konkursu, tylko za ten ze swoich programów, który zajął najniższe miejsce w Konkursie.
  2. Oprócz nagród dla zwycięzców Konkursu mogą zostać przyznane dodatkowe nagrody dla najlepszych uczniów liceum lub gimnazjum.
  3. Nagrodami w Konkursie są: książki, nagrody rzeczowe oraz koszulki lub kubki promocyjne "ITPW". Lista nagród podana na stronie jest orientacyjna i może ulec zmianie.

V. Ochrona danych osobowych

  1. Uczestnicy Konkursu wyrażają zgodę na przetwarzanie danych osobowych w rozumieniu ustawy z dnia 29 sierpnia 1997 r. o ochronie danych osobowych (Dz. U. Nr 133, poz. 833) w celach prowadzenia Konkursu, wyłaniania zwycięzców i przyznawania, wydawania oraz odbioru nagród.
  2. Uczestnik ma prawo do wglądu do swoich danych oraz ich poprawiania.
  3. Podanie danych adresowych niezbędnych do wysłania nagrody jest dobrowolne, lecz ich niepodanie uniemożliwia otrzymanie nagrody przewidzianej regulaminem Konkursu.

VI. Przepisy końcowe

  1. Organizatorzy Konkursu zastrzegają sobie prawo do zmian w niniejszym regulaminie oraz prawo jego ostatecznej interpretacji.
  2. Wszelkie niejasności należy zgłaszać do jury poprzez "Forum", działy "Zadanie konkursowe" oraz "Pytania techniczne". Jeśli to okazałoby się niemożliwe, można wysłać emaila na adres: kni@mimuw.edu.pl.

Zasady organizacji zawodów

A. Zasady ogólne

  1. Przeprowadzone zostaną dwie rundy rozgrywek: Runda Próbna i Turniej. Runda Próbna umożliwia sprawdzenie swojego programu przed zakończeniem Konkursu. Kluczowe są wyniki Turnieju.
  2. W konkursie może pojawić się pewna niewielka liczba programów zgłoszonych przez organizatorów. Nie biorą one udziału w klasyfikacji, lecz wyniki gier z nimi wliczają się do punktacji.

B. Zgłaszanie programów

  1. Aby zgłosić program do Konkursu, uczestnik powinien wysłać go używając formularza umieszczonego na stronie konkursowej Serwisu. Jest to jedyny sposób zgłaszania programu.
  2. Podstawą oceny jest kod źródłowy programu.
  3. Rozwiązanie powinno składać się z pojedynczego pliku nie większego niż 100 KB. Nie przeszkadza nam, gdy po kompilacji programu w Javie powstanie wiele plików wynikowych.
  4. W każdej z rund biorą udział programy zgłoszone do momentu zakończenia tej rundy podanego w Terminarzu. W szczególności programy zgłoszone przed zakończeniem Rundy Próbnej biorą udział także w Turnieju.
  5. Dla potrzeb Konkursu, za moment zgłoszenia przez uczestnika programu uznaje się moment, w którym nadesłany formularz zostanie zapisany na serwerze Serwisu.
  6. Uczestnik Konkursu ma prawo do zgłoszenia co najwyżej 20 programów (poprawionych wersji programu) do momentu zakończenia Rundy Próbnej oraz co najwyżej 20 programów od tego momentu. Oceniany jest program najpóźniej wysłany, ale nie później niż mówi termin.

C. Wymagania dotyczące programów

  1. Uczestnicy mogą zgłaszać do Konkursu jedynie programy napisane w następujących językach programowania: C, C++, Pascal, Java, OCaml.
  2. Programy powinny wczytywać dane wejściowe ze standardowego wejścia, a wyniki zapisywać na standardowe wyjście, zgodnie z protokołem opisanym w treści zadania.
  3. Programy w C/C++ mogą korzystać jedynie ze standardowych plików nagłówkowych (zgodnie ze standardem ANSI).
  4. Programy w Javie powinny zawierać klasę publiczną Gracz, a w niej statyczną metodę publiczną void main(String[] args). W wyniku kompilacji nie może powstać plik Loader.class (klasa Loader jest klasą pomocniczą uruchamiającą gracza). W treści kodu źródłowego nie może znaleźć się słowo finalize (jako słowo rozumiemy maksymalny ciąg liter, cyfr i podkreślników; ma to zapobiegać deklarowaniu metody finalize).
  5. Obowiązuje ograniczenie na liczbę wywołań systemowych: 10000 wywołań pomiędzy kolejnymi ruchami. Proszę więc nie sprawdzać zbyt często ile czasu upłynęło.
  6. Programom nie wolno próbować:
    • otwierać żadnych dodatkowych plików (np. tymczasowych),
    • korzystać z zewnętrznych bibliotek, mogą korzystać tylko z biblioteki standardowej; wyjątek stanowi biblioteka matematyczna w C/C++ oraz moduł Unix w Ocamlu,
    • tworzyć nowych wątków,
    • używać wątku Garbage Collectora do wykonywania obliczeń (Java),
    • komunikować się ze światem,
    • komunikować się z programami innymi niż arbiter,
    • zmieniać środowisko wykonania,
    • działać destrukcyjnie,
    • przeszkadzać przeciwnikowi w grze.

D. Ocena zgłoszonych programów

  1. Nadsyłane kody źródłowe będą kompilowane następującymi kompilatorami w wersjach jak podano lub nowszych:
    • GCC 4.2.4 (C/C++)
    • Free Pascal Compiler 2.2.0
    • Sun Java 1.6.0_20
    • OCaml 3.10.0
    za pomocą poleceń:
    • dla C: gcc -W -Wall -O2 -static abc.c -lm
    • dla C++: g++ -W -Wall -O2 -static abc.cpp -lm
    • dla Pascala: fpc -O2 -XS abc.pas
    • dla Javy: javac Gracz.java
    • dla OCamla: ocamlopt /usr/lib/ocaml/unix.cmxa abc.ml -unsafe -ccopt -static
  2. Rozwiązania których kompilacja w powyższy sposób zakończy się niepowodzeniem lub nie zakończy się w sensownym czasie nie podlegają ocenie. Mimo tego już w momencie zgłoszenia programu poprzedni program przestaje podlegać ocenie, zatem autor niekompilującego się programu kończy na ostatnim miejscu.
  3. Programy będą kompilowane i uruchamiane pod systemem operacyjnym Linux.
  4. Program będzie miał do dyspozycji 400 MB wolnej pamięci.

E. Ogłoszenie wyników Konkursu

  1. Bezpośrednio po zgłoszeniu programu zostaną przeprowadzone:
    • kompilacja,
    • próbne uruchomienie przeciwko programowi przykładowemu oraz przeciwko kilku zgłoszonym do tej pory programom innych zawodników - w środowisku, w którym będzie oceniany Konkurs.
    Zapis rozgrywek oraz kompilacji zostanie udostępniony uczestnikowi zgłaszającemu program. Zapisy rozgrywek z programami innych zawodników zostaną udostępnione zawodnikom biorących w nich udział. Nie gwarantujemy określonego czasu po jakim to się stanie. W szczególności niemożliwość szybkiego przeprowadzenia tych czynności nie zwiększa jakichkolwiek praw uczestnika.
  2. W terminie podanym w Terminarzu zostaną ogłoszone wyniki Rundy Próbnej. Wtedy każdy uczestnik będzie mógł zobaczyć zapisy (logi) z rozgrywek wyłącznie z gier przeprowadzonych przez swój program.
  3. W terminie podanym w Terminarzu zostaną ogłoszone częściowe wyniki Turnieju: ustalona zostanie liczba X, ujawnione miejsca od X+1-szego oraz skład pierwszych X miejsc.
  4. Pełne wyniki Konkursu zostaną udostępnione podczas uroczystości zakończenia.
  5. Terminy ogłoszenia wyników są podane orientacyjnie i z przyczyn technicznych mogą ulec zmianie.

F. Ustalanie kolejności zawodników

  1. Sposób ustalania kolejności zawodników na podstawie wyników rozgrywek zostanie podany wraz z treścią zadania.
  2. Jeśli ten sposób ustalania kolejności doprowadzi do remisu wśród kilku zawodników, jurorzy mogą przydzielić im miejsca w dowolny wybrany przez siebie sposób (będziemy się starali aby remisy były mało prawdopodobne, a jeśli wystąpią to prawdopodobnie ustalimy kolejność remisujących zawodników drogą losowania).
ITPW, KNI TEAM