Temat: Testy do bilarda

Czemu w każdym teście jest przypadek brzegowy t=2^(2(n+1))-1? Tylko na tym moje rozwiązanie się wywalało, a dostało 0 punktów :/
Ty masz szansę się dostać do finału. W zeszłym roku ja źle rozpatrywałem przypadek z wiodącymi 0 na wejściu w zadaniu 2A FIB i to mnie kosztowało awans, gdyż w każdej grupie pojawił się taki przypadek i 0/10. Takie jest życie - poczekaj do ostatecznych wyników z rozpaczaniem.
Auuuu. Boli. Można gadać, że Twoja wina i że ktoś kiedyś też miał smutno, ale chyba nikt nie powie, że to sprawiedliwe. Na Twoim miejscu też na pewno byłbym rozgoryczony :P.

Kwestia jest taka, czy osoba przygotowująca testy była świadoma, że to dla jakichś rozwiązań może być jakiś przypadek szczególny. Dla mnie osobiście nie wygląda on w żaden sposób inaczej niż cała reszta i puściłem rekurencyjnego checka w swoim rozwiązaniu po całym przedziale [0, 2^(2n+2)), więc jakbym przygotowywał testy, to bym się nie zastanawiał nad wymiarem kary dla osób źle rozpatrujących ostatni punkt na trasie. Co za tym idzie, dość możliwe, że przygotowałbym testy, w których nie zwracałbym uwagi na obecność tego punktu i być może znalazłby się on we wszystkich testach, być może w części, a być może w żadnym. Sądzę, że more or less takim tokiem rozumowania szła też osoba przygotowująca testy i "tak wyszło", że się znalazł wszędzie. Nikt raczej świadomie by 10 pkt nie urąbał za złe rozpatrywanie jedynie tego punktu (no chyba, że jego nazwisko zaczynałoby się na "Dąb", a kończyło na "owski" :P).

W każdym razie obstawiam, że 85 pkt starczy na finał, więc raczej nie będzie aż takich powodów do rozpaczania :P (pamiętajmy o osobach z zagranicy i o tych, które zrezygnują).
Cóż, ja miałem rozwiązanie polegające na rekurencyjnym rozpisaniu tego, jak wygląda odbijanie się między dwiema sąsiednimi krzywymi Hilberta dla każdej możliwej konfiguracji, a potem sobie na podstawie tego jakoś obliczałem, jak wygląda odbijanie się w oryginalnym zadaniu, i bug właśnie nie znajdował się w rekurencji (gdyby tam się znajdował, to prawie na pewno wszystko by się sypało), tylko właśnie w tym ostatecznym wyliczaniu. Moim zdaniem w tym zadaniu testy losowe wystarczyłyby, bo nie jest heurogenne, tylko przypadkogenne i w dodatku rekurencyjne. Jednak nie dziwię się, że układający testy miał pokusę dania przypadku szczególnego :P
Rada na przyszłość: warto było przetestować porównując wyniki na małych n z prostszym, wolnym rozwiązaniem.
Uznałem, że ręczne sprawdzenie całej ścieżki dla n<=2 wystarczy, ale nie zauważyłem, że na końcu powinno być (0, 1) zamiast (1, 0) (całkiem podobnie wyglądają). Jak sprawdziłem ręcznie, to uznałem, że w sumie to nie ma potrzeby pisania bruta (bardzo nie chciało mi się go pisać), zwłaszcza jak działa na testach Marka (bo jakby coś w rekurencji nie działało, to byłoby duże prawdopodobieństwo, że coś pójdzie nie tak). Wydaje mi się, że te decyzje brzmiały wtedy rozsądnie.

Jednak nauczyłem się, że sprawdzanie ręczne jest beznadziejne, bo brut by dał inną odpowiedź.

P.S Brut też jakiś ładny chyba nie jest
P.P.S @Tomek Moim zdaniem osiągnięcie jakiejkolwiek znaczącej liczby punktów nie testując jest prawie niemożliwe :P
No, pechowo.

Co do doboru testów to mam wrażenie, że chyba jury stara się generalnie dawać częściowe punkty bardziej za poprawne ale wolne rozwiązania, a nie za rozwiązania błędne w niektórych przypadkach.
Innym przypadkiem szczególnym jest odpowiedź 2**31 i za to obcinali już tylko jeden punkt...

(ogólnie to zakres odpowiedzi jest [0..2**31] czyli akurat się w int'cie nie mieści)