Temat: Czy GRA jest spoko?

Co sądzicie o zadaniu GRA? Najlepiej z argumentami. Wasz feedback bezpośrednio wpłynie na przyszłe edycje!
Mi szczerze mówiąc nie podobało się to zadanie. Domyślam się, że jego istnienie było próbą uwiecznienia wymierającej formy maratonów 24godzinnych, ale bez interakcji z innymi graczami i jakimiś rankingami trochę to traci, bo gapienie się na nie i rywalizacja są tym elementem wynagradzającym za "pisanie byle gówna aby cokolwiek robiło" i wielokrotne "zobacz co nie działa i zaklej cieknącą rurę taśmą klejącą" poprzez testowanie i patrzenie co nie działa i czemu. Po wątku na forum zdaje mi się, że jednak eksperyment nie został zbyt ciepło przyjęty.
Mi się podobała, zadanie sprawdzało te dziedziny cp, w których rzadko można się wykazać na takich konkursach, czyli pisanie botów. Dodatkowo, dobrze pasuje zadanie nad którym trzeba posiedzieć, poeksperymentować i dużo napisać. Ja jestem bardzo za.
Maratony 24-godzinne są czymś zupełnie innym, bo gra się tam w gry przeciwko innym programom. To było na wzór zadań optymalizacyjnych na Codechefie i TC Maratonach. Sprawdza inne myślenie i służy jako tie-breaker przy okazji. W każdym razie format potyczek nie pozwala na nic w stylu gier z maratonów 24-godzinnych.
Rozumiem czemu twierdzisz, że było na wzór zadań optymalizacyjnych, ale jednak sterowanie jakimiś jednostkami, które coś zbierają, które mają jakieś różne skille i których są różne rodzaje to dużo bliższe dedlajnowym grom z innymi tylko że po prostu bez reszty graczy xd. No i do tego punktowanie takie, że w zasadzie coś co robi cokolwiek nie bardzo głupiego dostaje 8 pkt. Ale z drugiej strony żyłowanie może być trudne i męczące, więc dawanie mniej też by było przykre, nie ma dobrego wyjścia xd.
Mi się podobało :) Bo można było je zwizualizować na konsoli (dobrze, że tylko 20x20!!) jak pacmana i popatrzeć jak na prawdziwą grę :) Dodatkowo dzięki temu że różne poziomy inteligencji botów dostawały różne punkty (i co było podane w treści!), można było zacząć od nieoptymalnych rozwiązać i je ulepszać (szczególnie ważne dla mnie, bo nie miałem pojęcia jakie jest optymalne rozwiązanie). Poziomem trudności można było łatwo manipulować poprzez maksymalną liczbę rund i prawdopodobieństwo wystąpienia skał. Gdyby w zadaniu nie było tabelki z `p` i `k` to pewnie bym nawet nie ruszył, myśląć, że 80% to skały i liczba rund jest 'potyczkowo trudna'
Mi się podobało jako "coś innego". Są już rundy rozproszone, które są ogromnym urozmaiceniem. Zwykłe zadanka są w contestach co tydzień na różnych stronkach (ale jakościowo zwykle dużo słabsze).

Jestem za tym, żeby zrobić jeszcze jedną rundę specjalną, właśnie z zadaniem optymalizacyjnym, ew. interaktywnym, ale tylko jednym takim zadaniem na całą rundę (może za 20 punktów) i z sensowną punktacją, np.:
(a) Słabe rozwiązania dostawałyby mało punktów, np. 2/10, a nie 8/10 jak tutaj, a zdobycie maksa graniczyłoby z cudem
(b) Albo najlepiej: liczba punktów byłaby zależna od pozycji w finalnym rankingu dla tego zadania

I jeszcze jedna uwaga - organizatorzy mogliby dostarczyć mini-framework do wizualizacji i testowania gry. Żeby robienie tej nudnej części zadania nie zajmowało 50% czasu zawodnikom ;)
Powiem tyle: chyba jest jakiś powód, że konkurs się nazywa "Potyczki Algorytmiczne", a nie "Potyczki Heuro-Klepackie". Jak zobaczyłem to zadanie (plus jeszcze trochę zadanie WIE), to stwierdziłem, że aż tak mi nie zależy.
Mi się bardzo podobało, głównie jako zadanie optymalizacyjne, ale też bardzo przystępnie podzielone na subtaski. Dodatkowo system generowania testów był z góry wiadomy, więc tak naprawdę można było napisać generatorkę, checkerkę i lokalnie wszystko symulować nie martwiąc się o przypadki brzegowe, a jedynie o ogólną wydajność
Według mnie to zadanie było zupełnie nie w klimacie potyczek i nie wydaje mi się że to dobry kierunek. Ogólnie uważam, że tak ja do tej pory, zadania powinny być bardziej ukierunkowane na wymyślenie fajnego algorytmu a mniej na heury (to się tyczy też zadania heros) i rzemieślnictwo programistyczne.
Sam pomysł wrzucenia zadania optymalizacyjnego oceniam zdecydowanie pozytywnie. Podobała mi się też jawna punktacja i jej rozkład (z moimi 3 punktami za to zadanie wcale nie uważam, że grupy były zbyt proste).

Samo zadanie miało moim zdaniem dobry balans między skomplikowaniem problemu (mało komend, jasne cele) a różnorodnością rozwiązań (chyba dość sporo).

Natomiast nie podobały mi się szczegóły. Ograniczenie na jedną jednostkę na pole było chyba najgorszym z nich. Przestrzeganie tego mocno przenosiło ciężar zadania z algorytmu na klepanie przypadków. A zwłaszcza w wersji, gdzie ruch jest natychmiastowy, więc nawet kolejność ruchów jest istotna.

Niektórzy podają tu czasochłonność jako dobrą rzecz, ale dla osób, które nie mogą poświęcić całego weekendu (a nawet i całego tygodnia, bo pewnie niektórzy mieli rundę 4. zrobioną w czwartek i mogli na rundę 5. poświęcić całe 3 dni a nie tylko 2) był to problem. Zwłaszcza jak się nie zrobiło pozostałych zadań to trudno było się przekonać żeby przerwać bezowocne (choć przynajmniej dość przyjemne) rozważania nad WIE/RYK i przejść w tryb N godzin klepania.

Popieram pomysł osobnej rundy optymalizacyjnej, włącznie z propozycją jednego zadania za 20 punktów (być może jako 10 pkt łatwiejszych B oraz 10 trudniejszych A).

Podsumowując, jestem za, ale w wersji bardziej algorytmicznej a mniej implementacyjnej.
Zadanie GRA było bardzo fajne jak na swój typ, można było wymyślać do niego wiele podejść, trzeba było poradzić sobie z jakimiś zagadkami typu:
- kiedy dokładnie odnosić złoto do bazy? Na początku trzeba szybko żeby budować nowe jednostki, później trzeba z tego zrezygnować i zebrać złoto z drugiego końca planszy.
- co zrobić na koniec, gdy wszyscy odnoszą złoto, aby się nawzajem nie zablokowali?
Nie byliśmy zasypani masą niepotrzebnych komend tak jak to bywa czasem na konkursach 24-godzinnych. Przydałby się rzeczywiście wizualizator od organizatorów, szczególnie że zawodnicy nie byli przygotowani przed zawodami do pisania własnych.

Ja niestety za tego typu zadaniami nie przepadam i uważam, że Potyczki to nie miejsce na takie zadania. Mam też nadzieję, że w przyszłych latach się takie nie pojawią. Sprawdza ono inny zestaw umiejętności, niż ten jakiego zazwyczaj oczekuje się na konkursach algorytmicznych (a te zawody są Algorytmiczne nawet z nazwy). I nie mam tu na myśli ogólnie zadań optymalizacyjnych, czasami zadania optymalizacyjne mają algorytmiczny posmak i nie mam nic przeciwko, żeby w tę stronę Potyczki poszły w przyszłych latach. Zadanie Gra to był po prostu zbyt duży skok na poniższej liście:
- Przeciętne zadanie z Potyczek
- Przeciętne zadanie optymalizacyjne na konkursie algorytmicznym
- Przeciętny TopCoderowy Marathon
- Zadanie Gra
- Przeciętny Deadline 24 (którego już niestety nie ma)

@Konrad Paluszek
Masz 80 punktów za cztery pierwsze rundy i nigdy nie byłeś w finale, zrobiłbyś Skwarki + jakiegoś bruta i miałbyś pewny finał... Nie wiem co masz do zadania WIE, składało się trochę z 3 różnych zadań, ale każde z nich było jak najbardziej algorytmiczne. Mnie osobiście zadanie RYK z nawiązką zrekompensowało nieprzyjemności związane z zadaniem GRA.
Mam mieszane uczucia co do zadania GRA. Z jednej strony fajnie się to pisało i w sumie dobrze się bawiłem przy klepaniu i oglądaniu jak się ruszają gostki na moim wizualizatorze.

Tylko to trochę inna dyscyplina sportu. Już zadania rozproszone są inne, więc pytanie czy potyczki to ma być wielobój programistyczny, czy jednak konkurs z klasycznego 'sports (competetive) programming'.

No niestety jako że się nigdy nie bawiłem w maratony/deadliny itp. to popłeniłem błędy nowicjusza. (Uwaga na ból dupy).
Wysłałem późno pierwszy submit. I okazało się, że z jakiegoś powodu dopowiedziałem sobie, że w bazie może być jednostek ile chcesz. A jak dopisałem żeby może być tylko jedna, to zaczęły się blokować. Udało się to na szczęście naprawić. Wziąłem się za buldożery, i znowu wysłałem dopiero jak już na moim wizualizatorze zaczęło działać. Już myślałem, że mam pewne 8pkt i zacznę żyłować do 10. A po wysłaniu okazało się, że jest jakiś bug w całym kodzie do tych tanków i dostaje komunikat że ruszam jednostką z pola na którym nie ma jednostki. Ten bug był współdzielony z kodem wizualizacji i przez to wyglądało, że wszystko jest ok. I koniec końców nie znalazłem tego co psuło. Mam 4+0 zamiast 4+4 za to zadanie. I pewnie tych 4pkt braknie.
Dla mnie GRA była bardzo fajnym urozmaiceniem. Mimo iż w moim przypadku zakończyło się totalną klapą w związku z brakiem czasu, to miałem z jego klepania i debugowania najwięcej przyjemności.

Natomiast rozumiem, że wielu osobom zadanie mogło się nie podobać, bo nie da się ukryć, że zmienia charakter konkursu. Pewnie organizacyjnie byłoby to nie do przeskoczenia, ale dla mnie idealnie byłoby gdyby był osobny konkurs z jednym zadaniem typu GRA (może trudniejsze, a może turniej programów walczących jak za dawnych lat w ITPW) i tydzień czasu na jego rozwiązanie :)
Tak swoją drogą, czy ktoś rozważał zaprzęgnąć podejście AI do tego zadania, np. Q-learning? Czy to miałoby jakiś sens?
Mi przyszedł do głowy jeszcze jeden argument: format finału i format eliminacji (potyczek) to i tak dwa całkiem różne światy, więc nie widzę problemu w jeszcze drobniejszym odbiegnięciu.
To ja lekko zbaczając z tematu w obronie wspomnianego HER wspomnę, że to zadanie wcale nie jest z gatunku "napisz byle co i zobacz, że działa" tylko zupełnie legitnie używając mądrych słów projektujemy branchingowy algorytm typu Las Vegas (tzn. zawsze działa poprawnie, ale jak ma pecha to będzie działał długo, ale to się dzieje z bardzo małym pstwem) z bardzo konkretną oczekiwaną złożonością czasową. Oczekiwana złożoność czasowa się dowodzi i wynosi O(sqrt(2m)^((k+1)/2)), a jak się doda jakieś opty to nawet można zbić to O(sqrt(2m)^k / k!). Nie nazywałbym tego "heurą".
Ta, też chciałem o tym wspomnieć, w pełni zgadzam się z Wojtkiem.
Co do GRA no to rozumiem, że może i takie zadania się niektórym podobają, bo czy se tam mogą pooglądać własne wizualizacje, czy coraz bardziej poprawiać własne pomysły i mieć z tego fun. Akurat w moim przypadku napisałem pierwszą nieidiotyczną rzecz, która mi przyszła do głowy i po usunięciu małych bugów praktycznie od razu działało, czołgi się od razu wyrabiały z ogromnym limitem, a farmerzy na polu bez kamieni dawali ~400 ruchów i jedyne co mi było z tego całego funu to patrzenie na sumaryczną liczbę ruchów, bo nic więcej mi nie było potrzebne w zasadzie. Jedynie ręcznie kilka razy musiałem sobie wypisać planszę i zobaczyć czemu na tym jednym na kilkaset ostatnich testów się zdedlockowało i dodać jakiegoś głupiego fixa aby się tak nie działo.
Ja się w takowe nie bawię, ale w Internecie jest chyba sporo konkursów zarówno optymalizacyjnych (topcoderowe marathony) jak i takich gdzie trzeba pisać jakieś pseudosztuczne inteligencje do jakichś botów grających w jakieś gierki. Jest to niewątpliwie jakiś skill i jakiś rodzaj zabawy, ale nie widzę powodu, czemu zwolennicy takich rozrywek po prostu nie znaleźli innych miejsc, gdzie mogą się pobawić takimi rzeczami, a Potyczki zostawić czystymi od takowych, bo zdecydowanie takie zadanie nie pasuje formą do nich.
Do tego jeszcze skomentuję to, że może rzeczywiście _coś_ w tym zadaniu trzeba pomyśleć i zmierzyć się z pewnymi problemami jak np. wspomniane
"- kiedy dokładnie odnosić złoto do bazy? Na początku trzeba szybko żeby budować nowe jednostki, później trzeba z tego zrezygnować i zebrać złoto z drugiego końca planszy.
- co zrobić na koniec, gdy wszyscy odnoszą złoto, aby się nawzajem nie zablokowali?"
ale oba wydają mi się dość nudne i przyziemne w porównaniu do reszty zadań z PA. Zadanie zdecydowanie bardziej na klepanie setny raz "z każdej jednostki zapuść bfsa i w jakikolwiek nieidiotyczny sposób wybierz jej następny cel i tam idź" niż jakieś ciekawe podejście. Już nawet zadania optymalizacyjne, gdzie się jakoś sensownie przeszukuje przestrzeń rozwiązań, zapuszcza jakieś beam searche, local searche, genetyki, NMCSy, MCTSy, czy inne tego typu rzeczy są dużo ciekawsze i można się w nich wykazać dużo większą pomysłowością niż w czymś, gdzie zdecydowanie głównym problemem jest przeniesienie trywialnych idei na 500 linijek kodu tak aby nie umrzeć.
Bardzo bym nie chciał aby zadania tego typu zagościły na dobre w PA i bardzo bym nie chciał jakiejś rundy optymalizacyjnej, pomimo tego, że nie jestem takim przeciwnikiem tego typu zadań na jakiego się wydaje po napisaniu tego posta i lubię sobie od czasu do czasu wystartować w jakimś Deadline24 czy napisać jakieś opty, ale po prostu nie zanieczyszczajcie tym Potyczek :P.
No kurcze, wy chyba nie wiecie co to jest opty. Tutaj nie trzeba było żyłować rozwiązania do granic i konkurować z innymi, tylko mieliśmy daną z góry ustaloną przez jurorów granicę i trzeba było do niej dojść, co nie było trudne, jurorzy nie wymagali dużo. Oczywiście w tym zadaniu byłoby pole do popisu, ale było raczej zadaniem na w miarę sensownego zachłana i sprawdzenie czy umiesz napisać kawałek kodu, co w konkursach jakoś zazwyczaj idzie w parze z myśleniem (jak to powiedzieli organizatorzy przedostatniego CERCA w Pradze - "To są zawody z programowania, a nie z matematyki teoretycznej" - nie no, tutaj to żarcik). Ja byłbym przeciw co do opty-opty, to faktycznie nie klimat potyczek, ale zadanie tego typu moim zdaniem było bardzo dobre. To, że pierwsza rzecz którą napisałeś działała, w ogóle mnie nie dziwi, miałem tak samo, co potwierdza, że limity narzucone przez jurorów nie były ciasne, a samo zadanie było prostawe (i powinno, w końcu było w B).

I: tak, trochę oklepana tematyka, ale tym bardziej było prostawe przez to. Jak dwa lata temu puszczałeś flowa po raz setny, a rok temu pisałeś centroidy to nie marudziłeś, konkursy trochę tak działają, jak coś już umiesz to Ci łatwiej, tylko mniej fajnie się pisze. Mogło być gorzej, mogli chcieć żebyśmy ruszali jednostkami po planszy, które dostarczają przesyłki, mają swoje pojemności, a przesyłki mają limity na czas dostarczenia...
GRA jest spoko. Na pewno fajnie by się oglądało te myślące jednostki. Najbardziej jednak podobało mi się to, że przy moim targecie nie musiałem jej pisać :)

Pamiętam kilka lat temu też było zadanie "gra", z pytaniem o wygrywającą stronę. Robiłem je kilka dni (pokonkursowo) i omal nie zwariowałem, tak było porąbane. Może nabawiłem się nawet urazu psychicznego do zadań o takiej nazwie. Tamto należało do A. To już chyba lepsza taka gra, jak teraz. Ale zdecydowanie bądźmy DRY i niech każdy nie pisze durnego wizualizatora. Może jakby był jakiś gotowy kod wizualizacyjno-testujący, "błędne rozwiązanie" :), to bym się zdecydował. (Sprawdziłem, zadanie jest z 2009 roku, opisane "W poszukiwaniu wyzwań").

Na IPSC w 2013 było zadanie typu gra. Tam wizualizator był w javascripcie. Tylko że tam wysyła się rozwiązanie, nie kod. Coś jak CodeJam. Ale jakby wsadem do wizualizatora było wyjście z naszego programu, to i javascript byłby ok.

Tak jeszcze w ostatniej chwili przyszedł pomysł do głowy: zadanie alternatywne. Z 2 zadań wybierasz 1 i tylko ostatnie zgłoszenie z tych 2 się liczy. Wtedy "gra" będzie tylko dla "graczy". :) Na dodatek dowiedzielibyśmy się, czy gra jest spoko. :)
@Marcin Smulewicz - jeśli ktoś nie był ani razu na finale, to 80 pts spokojnie mu wystarczy. Można było mieć cały weekend wolny, a i tak się dostać do finału :) Decyzja bardzo dobra.
Ja bym nie był taki pewien czy 80 spokojnie wystarczy...
:(
Ja obstawiam, że 80 pts spokojnie wystarczy, bo jest cała masa weteranów, którzy byli już 2 razy na finale i dla nich jest tylko 7 miejsc (pierwsze 3 są zarezerwowane dla gości z Chin, którzy i tak nigdy nie przyjeżdżają na finał). Zatem zostanie 13 miejsc do rozdzielenia wśród tych, którzy nie byli 2 razy na finale.

Nawet, jeśli nie w pierwszym rzucie, to ostateczna lista finalistów będzie zawierała osoby z 80 pts.
To jeszcze ja wtrącę swoje trzy grosze.

Zadanie samo w sobie niespecjalnie mi się podobało - na pierwszy rzut oka wyglądało trochę na "wymyślmy i dajmy zawodnikom jakieś zadanie na napisanie heury/losowej strategii" i moim zdaniem nie wyglądało zbyt atrakcyjnie. (Oczywiście, gdyby w jakiś magiczny sposób istniała dowodliwa strategia gwarantująca rozwiązanie zadania z dużym prawodpodobieństwem, to GRA od razu dostałaby u mnie +20 do fajności. Zwykle jednak nie oczekujemy takich rozwiązań po tego typu zadaniach.)

Z drugiej strony nie mam nic przeciwko jednym, może dwu, niestandardowych zadaniach w trakcie rund zdalnych - byleby wciąż miały dość mocny algorytmiczny posmak. Wg mnie GRA była tutaj trochę na granicy i nie dziwię się mieszanym uczuciom zawodników (jestem jednak zaskoczony skrajnym emocjom wokół niej). Ale tutaj powstaje pytanie: czy obecnie zadania rozproszone nie wykorzystują już co najmniej większości quoty na "niestandardowe zadanka"? Trochę nie wiem, co o tym myśleć.

PS. Muszę docenić, że GRA była opracowana naprawdę porządnie. Nie kojarzę z nią żadnych istotnych problemów technicznych, które chyba notorycznie prześladują zadania tego pokroju.
@Przemysław
Kuuuuuuuuuurde, nie doczytałem, że w regulaminie jest "Po pięciu rundach zdalnych do finału zawodów zostaje zakwalifikowanych 20 uczestników. Dziesięciu spośród nich to zawodnicy sklasyfikowani na miejscach od 1 do 10 na liście rankingowej A+B. Następnych dziesięciu to najwyżej sklasyfikowani zawodnicy z kolejnych miejsc, z wyłączeniem osób, które przynajmniej dwukrotnie uczestniczyły w finale Potyczek Algorytmicznych.". To tym bardziej nie żałuję, że spędziłem weekend na ciekawszych rzeczach niż zadania z ostatniej rundy.
@Konrad, co jest dla Ciebie zaskakującego i nieoczywistego w tym regulaminie, bo nie mam pojęcia? Na pewno nie ma zasad kwalifikowania zawodników, którzy są zapraszani jak inni zrezygnują. Czy byłeś >=2 razy na finale?
Zaskakujące jest to, dlatego, że nie doczytałem tego i nie wiedziałem, że tak jest. A teraz już wiem. I tyle
Ale nie wiem czego nie wiedziałeś, bo dla mnie wszystko co tu jest jest oczywiste od liceum, więc o to jest moje pytanie. Że jak się było >=2 razy to trzeba być w TOP10?