RSS Feed Subskrybuj główny kanał RSS / kanał RSS wydarzeń

 

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

  1. Idź do www.topcoder.com/tc.
  2. Zarejestruj się.
  3. 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.
    tcarena
  4. 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.

  1.  Zarejestruj się: Active Contests -> [WybraćSRM] -> Register.
  2. 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).
  3. Wybierz zadanie:  lista “Select one”.
  4. 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.

Wygląd areny po wybraniu konkretnego zadania

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.