Koło Naukowe Algorytmiki kAlgorytmy
Wydział Matematyki i Informatyki UAM
Przewodnik po TopCoderze dla początkujących
Wstęp
Artykuł ten jest przeznaczony dla osób umiejących programować i chcących poznać praktyczne aspekty TopCodera.
Czym jest TopCoder?
TopCoder (www.topcoder.com) jest firmą zajmującą się sprzedażą oprogramowania tworzonego w czasie różnych zawodów, których firma ta jest organizatorem. TopCoder (w skrócie TC) umożliwia rywalizację w różnych obszarach np. algorytmice, projektowaniu oprogramowania czy jego testowaniu.
W dalszej części skupię się na opisie jak wziąć udział w Signle Round Match (w skrócie SRM) czyli jednorundowym konkursie algorytmicznym. Nawiasem mówiąc okresowo TC organizuje zawody więcej niż jedno rundowe (eliminacje, runada pierwsza, runda druga, …, półfianł, finał), w których można wygrać różne gadżety typu: koszulki, pieniądze etc.
Prolog
- Idź do www.topcoder.com/tc.
- Zarejestruj się.
- Uwaga: krok ten wymaga JRE! Kliknij w “O(n)” (Przycisk ten znajduje się w lewym górnym obszarze strony). W zależności od używanej przeglądarki internetowej powinien pojawić się komunikat z prośbą o wybór akcji (“zapisz” lub “otwórz”) i wówczas należy wybrać “otwórz” albo od razu uruchomi się aplet javowy (tzw. arena), taki jak na zdjęciu poniżej, za pośrednictwem którego będziemy mogli brać udział w zawodach.
- Zaloguj się.
Formuła SRM
Aby wziąć udział w SRM należy się zarejstorwać do tego konkrsu (how to poniżej ;-) ). Zarejestrować się do SRM można najwcześniej na 3 godziny przed jego rozpoczęciem a najpóźniej na 5 minut przed jego rozpoczęciem. W związku z faktem, że liczba dostępnych miejsc jest ograniczona czasmi rejestracja na ostatnią chwilę może zakończyć się niepowodzeniem.
W SRM zawodnicy dzieleni są, wg ich rankingów, na dwie grupy (tzw. dywizje): z większym (DIV 1) i mniejszym rankingiem (DIV 2). Dalej wewnątrz tych dywizji uczestnicy są losowo przyporządkowywani do maksymalnie 20 osobowych roomów. Jeśli przewidziane są nagrody pieniężne dla najlepszych, to wystarczy być w najlepszej trójce w roomie by cosik zarobić.
Zawody podzielone są na 4 części: kodowanie własnego rozwiązania (75 minut), przerwa (5 minut), wskazywanie błędów w rozwiązaniach kolegów z roomu (tzw. faza challenge; 10 minut) i testy rozwiązań. Często zdarza się tak, że testowanie zajmuje dłuższą chwilę, więc w praktyce po fazie challenge można uznać konkurs za zakończony i udać się np. na herbatę :)
W czasie coding phase mamy do rozwiązania trzy zadania: łatwe, średnie, trudniejsze. Potencjalnie możemy za nie uzyskać odpowiednio 250, 500, 1000 punktów. Piszę “potencjalnie”, bo wraz z upływem czasu wartość zadania maleje. W momencie wysłania zadania przysługującą liczbę punktów dostajemy niejako “na kredyt” – możemy je stracić w challenge phase lub w czasie testowania przez system.
W czasie challenge phase mamy dostęp do dowolnego wysłanego rozwiązania wszystkich uczestników konkursu (także z innych roomów a nawet z innej dywizji). Jednakże wskazywać błędy możemy jedynie w rozwiązaniach osób, z którymi jesteśmy w roomie. Polega to na tym by podać taki, zgodny z treścią zadania, zestaw argumentów do funkcji, dla których funkcja/metoda challengowanej osoby zwróci niepoprawny wynik. Za wskazanie takiego testu dostajemy 50 punktów. Jeśli jednak podamy test, dla którego program działa poprawnie, to tracimy 25 punktów.
W czasie testu systemowego rozwiązanie jest automatycznie oceniane pod względem poprawności i czasowo-pamięciowym. Ograniczenie czasowe rozwiązania każdego problemu wynosi 2 sekundy. Ograniczenie pamięciowe: 64MB.
W dowolnym momencie możemy poćwiczyć rozwiązywanie zadań w tzw. practice roomach. Koncepcja pracy w practice roomie jest analogiczna z tym jak wygląda SRM z tym, że w roomie może być więcej niż 2o osób i nie ma podziału na fazy – brak ram czasowych na kodowanie i challengowanie oraz sami musimy wydać polecenie uruchamiające testowanie wysłanego rozwiązania.
Obsługa areny – SRM
W poniższym opisie zakładam, że jesteśmy zalogowani do areny.
- Zarejestruj się: Active Contests -> [WybraćSRM] -> Register.
- Udaj się do własnego roomu: Active Contests -> Enter (zwykle gdy rozpocznie się SRM otrzymamy komunikat z pytaniem czy chcemy udać się do własnego roomu).
- Wybierz zadanie: lista “Select one”.
- Obejrzyj ranking i/lub rozwiązania ludzi w twoim roomie: przycisk “Summary” (zwracam uwagę, że oglądanie kodów, poprzez dwukrotne kliknięcie liczby punktów, jest dostępne najwcześniej w challenge phase).
Na poniższym rysunku widać wygląd areny po wybraniu konkretnego zadania. Z prawej strony na dole mamy do dyspozycji pięć przycisków, które umożliwiją odpowiednio: zapisanie pliku na serwerze TC, usunięcie obecnego kodu, kompilację kodu, testowanie za pomocą testów opisanych w treści lub swoich własnych (zwracam uwagę, że przy pierwszym użyciu interfejs do tworzenia własnych testów może nie być intuicyjny a zatem polecam zapoznanie się z nim) i wysłanie rozwiązania.
Obsługa areny – practice room
1. Wybierz rodzaj konkursu: Practice rooms->[Wybrać grupę SRM]->[Wybrać konkretny SRM].
2. Uruchomienie testów: Practice options->Run System Test
Epilog
Startując w SRM należy zwrócić uwagę by zawsze testować własne rozwiązania za pomocą przykładów z treści zadania. Ponadto zalecam korzystać z pewnych pluginów, które m.in. napiszą za nas szkielet rozwiązania. Przykładem takiego plugina jest KawigiEdit.
Leave a Reply
You must be logged in to post a comment.