ITPW

Najczęściej zadawane pytania

Pytania można zadawać na forum lub wysyłać na adres: kni@mimuw.edu.pl.


  1. Czy jest określone, w jakim wieku lub do jakiego typu szkoły ma uczęszczać uczestnik konkursu?
  2. Czy rozwiązania, w których stablicowano wyniki są dopuszczalne?
  3. Czy przy ocenie szybkości działania programu będzie brany język programowania?
  4. Co to znaczy "standardowe wejście" i "standardowe wyjście"?
  5. Jak wygląda znak końca linii?
  6. Czy dozwolone są wstawki w assemblerze
  7. Czy można używać standardowych bibliotek?
  8. Czy można przeprowadzać obliczenia w tle (wykorzystywać dodatkowe procesy, wątki)?
  9. Jak szybki jest komputer, na którym będzie prowadzona gra?
  10. Jakich funkcji związanych z czasem można używać w C?
  11. Czy jak ktoś ma więcej niż jedno konto, to grozi mu dyskwalifikacja?
  12. Jak jest liczony czas?
  13. Dlaczego mój program nie komunikuje się z arbitrem?
  14. Czy moje rozwiązanie może być podobne do programu przykładowego?

1. Czy jest określone, w jakim wieku lub do jakiego typu szkoły ma uczęszczać uczestnik konkursu?

Nie ma żadnych ograniczeń wiekowych, ani dotyczących szkół. Każdy (poza wyjątkami określonymi w regulaminie) może wziąć udział w konkursie. Zostaną jednak przyznane dodatkowe nagrody dla najlepszych licealistów.


2. Czy rozwiązania, w których stablicowano wyniki są dopuszczalne?

Tak. Przy ocenianiu rozwiązań liczy się jedynie ich efektywność i poprawność generowanych wyników.
Rozwiązania oceniane są przez bezduszne maszyny, które nie zwracają uwagi, jak brzydkie są rozwiązania.


3. Czy przy ocenie szybkości działania programu będzie pod uwagę brany język programowania?

Podstawą oceny jest czas działania programu. Limit czasowy będzie jednolity dla wszystkich języków programowania. Wybór języka z naszej listy należy do Ciebie i jest elementem rozwiązania.


4. Co to znaczy "standardowe wejście" i "standardowe wyjście"?

Jeśli nie wiesz co to znaczy, to po prostu kontaktuj się z sędzią dokładnie tak jak program przykładowy.


5. Jak wygląda znak końca linii?

Znak końca linii to #10 (czyli standard uniksowy).


6. Czy dozwolone są wstawki w assemblerze?

Są dozwolone, ale nie zalecane. Nie gwarantujemy, że wstawki będą się kompilować.


7. Czy można używać standardowych bibliotek?

Tak. Wszystko z ANSI C jest dozwolone (string.h, stdlib.h, ...). Wszystko ze standardu C++ też jest dozwolone (w szczególności STL). Moduł CRT w Pascalu nie jest standardowy.


8. Czy można przeprowadzać obliczenia w tle (wykorzystywać dodatkowe procesy, wątki)?

Nie.
Regulamin tego zabrania! Jeden program! Jeden plik! Jeden proces! Jeden wątek! Obsługa wątków i procesów nie jest w standardzie ANSI C. Czas działania obliczeń w tle i tak liczyłby się także do czasu zawodnika, więc nikt nie powinien odczuwać potrzeby ich wykonywania, to samo można sobie policzyć już w swojej kolejce.


9. Jak szybki jest komputer, na którym będzie prowadzona gra?

Nie wiemy.
Jeżeli ktoś chce oszacować szybkość komputera, to musi zrobić to sam. Albo poprzez mierzenie czasu, albo strzelać w ciemno. Takie czasy.


10. Jakich funkcji związanych z czasem można używać w C?

Wszystkie z time.h - bo jest w ANSI C. W szczególności time i clock.


11. Czy jak ktoś ma więcej niż jedno konto, to grozi mu dyskwalifikacja?

Teoretycznie nie, aczkolwiek nie jest to zalecane. I musicie pamiętać, że przy rozdawaniu nagród bierzemy pod uwagę najgorszy program (jeżeli ktoś ma więcej niż jedno konto).
Natomiast w przypadku podobnych rozwiązań przysłanych z kont różnych osób może nastąpić dyskwalifikacja.


12. Jak jest liczony czas?

Czas jest liczony sprawiedliwie.
Arbiter liczy czas procesora wykorzystany przez program. Program jest wstrzymywany na czas ruchu przeciwnika. W szczególności prawdziwy arbiter działa inaczej niż udostępniony sędzia graficzny (aplet). Aplet mierzy czas rzeczywisty od momentu wysłania graczowi komendy do momentu otrzymania od niego odpowiedzi. W szczególności nie wstrzymuje on programu gracza ani nie mierzy zużycia pamięci. Zatem czas odmierzany przez aplet jest nieco zawyżany.


13. Dlaczego mój program nie komunikuje się z arbitrem?

W tym konkursie komunikacja jest interaktywna.
Sprawdź czy twój program opróżnia bufor (fflush(stdout) w C/C++, Flush(Output) w Pascalu, System.out.flush() w Javie, flush_all () w Ocamlu).


14. Czy moje rozwiązanie może być podobne do programu przykładowego?

Może, można go wykorzystać w dowolnym stopniu. Właśnie po on jest, żeby pokazać jak komunikować się z arbitrem. Jest to nawet zalecane, doświadczenie pokazuje, że część zgłoszonych programów nieprawidłowo komunikuje się z sędzią i są to praktycznie wyłącznie programy, w których ktoś napisał komunikację od nowa.

ITPW, KNI TEAM