ITPW

Regulamin konkursu "Internetowy Turniej Programów Walczących - Turniej Stały"

Tekstem pochyłym pisane są komentarze
I. Zasady ogólne
  1. Bardzo proszę o rozsądek w ilości zgłaszanych programów. Proszę najpierw dokończyć poprawianie programu, przetestować i dopiero wtedy wysyłać program.
  2. Proszę nie zakładać kilku kont w celu wysłania kilu wersji tego samego programu. Należy wybrać najlepszą wersję. Dopuszcza się założenie nowego konta, jeśli nowy program przedstawia wyraźnie nowe podejście do rozwiązania zadania.
  3. W rozgrywkach oprócz programów przysłanych później biorą także udzał oryginalne programy z Turnieju Głównego z danego roku. Nie można ich wycofać, nadpisać, itp. Pozwala to na porównanie się z programami z tego turnieju, a nie tylko z jakimiś zmidyfikowanymi ich wersjami. Niektóre programy zostały zmodyfikowana tak, aby zaczęły działać.
  4. W chwili obecnej za uczestnictwo w Turnieju Stałym nie przewiduje się żadnych nagród. Gdyby miało się to zmienić zostanie to (z odpowiednim wyprzedzeniem) ogłoszone na stronie, na forum oraz poprzez wysłanie emaila do osób, które nadesłały jakikolwiek program na Turniej Stały.
II. Zasady przeprowadzania rozgrywek
Turniej Stały z założenia ma dawać jak najbradziej obiektywną ocenę programu. Dlatego odstąpiono od zasady liczenia sumy punktów przy rozgrywkach "każdy z każdym". Zamiast tego zastosowano ranking ELO. System rankingu ELO jest uznawany na świecie za najbardziej wymierny i jest stosowany w najpopularniejszych grach takich jak Szachy i Go.
  1. Początkowo gracz rozgrywa parę gier z losowymi graczami. Następnie co parę gier liczony jest jego ranking na podstawie dotychczasowych wyników; bardziej prawdopodobne jest, że program zagra z programami niedaleko w rankingu, a także z tymi, z którymi mniej razy grał.
  2. Dla każdego zestawu graczy losowana jest plansza (dla gier z planszą) i gracze grają na niej w różnych konfiguracjach (każdy raz jest pierwszym, raz drugim, itd.).
  3. Ranking programów będzie tworzony za pomocą BayesElo. Program ten liczy ranking ELO programów na podstawie wyników meczów.
  4. W przypadku gier czteroosobowych wyniki dla BayesElo tworzone są w następujący sposób. Dla danego meczu 4 programów, dla każdej pary programów porównywane są ich końcowe wyniki. W danej parze program, który ma więcej punktów jest zwycięzcą, natomiast jeśli programy zdobyły tą samą liczbę punktów, to jest to traktowane jako remis. W ten sposób w jednym meczu, dla każdego programu zostaną utworzone aż 3 wyniki, które są przekazywane BayesElo. Wyjątkiem są mecze, które kończą się przedwcześnie w wyniku błędu jednego z programów. W takim wypadku dla całego meczu tworzone są tylko 3 wyniki: przegrana wadliwego programu z pozostałymi. Nie są wtedy tworzone wyniki dla par pozostałych programów.
  5. Poprzedni program jest nadpisywany przez nowy program przysłany z konta danego użytkownika (nawet w sytuacji, gdy nowy program nie kompiluje się).
III. Zasady dotyczące nadsyłanych 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. 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. 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_14
    • 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
  5. Programy w C/C++ mogą korzystać jedynie ze standardowych plików nagłówkowych (zgodnie ze standardem ANSI).
  6. 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).
  7. 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.
  8. 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.
  9. Programom nie wolno próbować:
    • otwierać żadnych dodatkowych plików (np. tymczasowych),
    • korzystać z zewnętrznych bibliotek (np. CRT, Math w Pascalu), 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.
  10. Program nie może nadużywać wywołań systemowych. Obecnie nałożone jest ograniczenie: maksymalnie 10000 wywołań pomiędzy kolejnymi ruchami zawodnika. Należy więc unikać ciągłego sprawdzania zegara (należy sprawdzać raz na jakiś czas).
  11. Program jest kompilowany i uruchamiany na systemie uniksopodobnym na nieznanej platformie.
  12. Program będzie miał do dyspozycji 400 MB wolnej pamięci. Można przyjąć, że dane wejściowe są zawsze poprawne i zgodne ze specyfikacją podaną w zadaniu.
IV. Dodatkowe uściślenia
  1. W Konkursie może wystartować każdy. Uczestnictwo w Konkursie jest bezpłatne.
  2. Uczestnicy powinni rejestrować się w Serwisie pod własnym imieniem i nazwiskiem.
  3. Organizatorzy nie gwarantują pojawienia się wyników sprawdzania w żadnym określonym czasie.
  4. 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 i wyłaniania zwycięzców. Uczestnik ma prawo do wglądu do swoich danych oraz ich poprawiania. Podanie danych innych niż imię i nazwisko jest jest dobrowolne.
  5. Organizatorzy Konkursu zastrzegają sobie prawo do zmian w niniejszym regulaminie oraz prawo jego ostatecznej interpretacji.
  6. Wszelkie niejasności należy zgłaszać do jury poprzez odpowiednie działy "Forum" lub poprzez wysłanie emaila na adres: kni@mimuw.edu.pl.
ITPW, KNI TEAM