Niedziela była bardzo emocjonująca. Szczególnie wielu emocji dostarczały Akademickie Mistrzostwa Polski w Programowaniu Zespołowym, które odbyły się we Wrocławiu.
Zawody można było śledzić online na stronie http://solve.edu.pl/~amppz/chartcode/ranking.html (z niej pochodzi też powyższa grafika). Dzięki uprzejmości Instytutu Informatyki UWr, mamy dane o zgłaszanych rozwiązaniach podczas zawodów. Trochę sobie w tych danych pokopiemy.
Wyniki uczelni
Z wyżej wymienionej strony można odczytać kim są zwycięskie zespoły (pierwsze dwa miejsca dla drużyn z UW, trzecie dla drużyny z UJ). Z 12 przygotowanych zadań, najlepszemu zespołowi udało się rozwiązać 8. A pozostałe? Zobaczmy jak wygląda liczba rozwiązanych zadań w podziale na uczelnie.
Wysokie miejsce UW czy UJ raczej nie dziwi, ale miło zobaczyć znakomitą formę zespołów z XIV liceum (dwa zespoły startowały z XIV’tki, więc ten boxplot należy czytać ostrożnie).
Wyniki zespołów
Przyjrzyjmy się zespołom, które zgłosiły 5 lub więcej poprawnych rozwiązań. Zobaczmy jak walczyły o punkty.
Na poniższym wykresie przedstawiono wynik skumulowanej liczby rozwiązań w podziale na: poprawnie rozwiązane (AC), z błędem wykonania (RE), z przekroczonym czasem (TLE) czy złą odpowiedzią (WA). Co ciekawe strategia zespołu UJ1 była zupełnie inna niż UW5 czy UW1, ten pierwszy wysłał kilka rozwiązań, większość poprawnych, dwa z UW próbowały i próbowały, niestety w większości z wynikiem WA. Widzimy też, że niektóre zespoły miały problem z czasem (TLE) a inne wyłącznie z poprawnością odpowiedzi (WA).
Trudność zadań
Treści zadań dostępne są tutaj. Warto się z nimi pobawić, z zacisza kanapy zazwyczaj kilka wygląda na łatwe. Niesamowite jest to, że pierwsze poprawne rozwiązanie zgłoszono 3 (trzy!) minuty po starcie zawodów. Poniższy wykres przedstawia liczbę poprawnych rozwiązań jako funkcja czasu (w podziale na zadania). Po godzinie od startu zawodów zadanie D rozwiązało 40 zespołów. Ale co ciekawe, kto miał je zrobić, to je zrobił szybko. Poprawne rozwiązania dla zadania F zaczęły spływać później, koniec końców było ich jednak więcej.
Ciekawa historia kryje się też za zadaniem G, rozwiązały je tylko dwa zespoły. Drugi w samej końcówce zawodów. Niby nic, ale właśnie to rozwiązanie zgłoszone przed samą końcówką dało zwycięstwo dla UW5.
Trudność zadania można też oceniać przez pryzmat różnych możliwych błędów w zgłoszeniach. Poniższy wykres pokazuje skumulowaną liczbę zgłoszeń o określonym statusie w funkcji czasu. Gdy tylko okazało się, że wiele zespołów rozwiązało zadanie D, pozostałe zespoły atakowały to zadanie zaciekle (ale już bez większych sukcesów). Wiele było w tych zgłoszeniach problemów z czasem wykonania. Inny profil problemów obserwowany jest dla zadania B, tutaj najczęstszym problemem jest poprawność odpowiedzi. Ciekawie wygląda zadanie H, które było często atakowane, ale koniec końców rozwiązała je tylko jedna drużyna.
Poniższy wykres przedstawia te same informacje ale w innej formie. Wszystkie błędne odpowiedzi zgrupowano w jedną czerwoną plamę. Łatwiej zauważyć różnice w szansie na poprawne rozwiązanie dla zadania I w stosunku do zadania H.
Naturalnym pytaniem jest pewnie: jaki wyglądał profil złych odpowiedzi dla różnych zadań? Jak taki profil pokazać? Oczywiście analizą korespondencji! Poniższy wykres pokazuje, że dla zadania I typowy problem to błąd wykonania, podczas gdy w zadaniu K najtrudniej było zmieścić się w czasie (tak tak, biploty czyta się magicznie).

Zawody zespołowe w programowaniu budzą niemałe emocje. Miałem przyjemność je przeżywać jako uczestnik (serdeczne pozdrowienia dla Bartka S, Wojtka D, Przemka W, Mateusza K i Adama K za wspólne starty), czy sędzia. A jak się okazuje, na te emocje można też patrzeć poprzez wizualizacje.
zadanie H chyba zostalo rozwiazane
Dzięki, faktycznie, rozwiązała je jedna drużyna. Poprawiłem.