Temat: Paczka testów + sprawdzaczka

Witam,

prosiłbym o potwierdzenie tudzież znegowanie moich outów. Paczka zawiera:
- 200 małych testów (k<=20, n<=30)
- 500 średnich testów (1e3<=k<=1e4, n<=1e4)
- 20 dużych testów (1e5<=k<=1e6, n<=1e6)
- kod sprawdzaczki wraz z binarką pod systemy rodziny Windows -- stara zbugowana wersja, link do kodu poprawionej wersji podany nieco niżej
Link do paczki: https://www.dropbox.com/s/o0lgryapj9c8sqv/klo-tests1.zip

Sprawdzaczka jest zgodna z założeniami skryptu "ocen".
Jej kod można znaleźć także tu: http://pastebin.com/WzndkzsR


Sposoby wykorzystania:
1. Bezpośrednie uruchamianie
Wywołać spod wiersza poleceń:
klochk wyjscieProgramu.out poprawneWyjscie.out
gdzie pierwszy argument to jest odpowiedź wygenerowana przez Twój program, a drugi to out z mojej paczki.
Można tu wykorzystać skrypt basha/batcha z pętlą.
2. Wykorzystanie skryptu ocen (dostępny w "Pliki" po lewej; na przykładzie wersji dla Windowsa) - zakładam znajomość skryptu na poziomie podstawowym - w przypadku jej braku odsyłam do "info.txt" załączonego do skryptu
- wrzuć skompilowaną sprzadzaczkę do folderu bin/
- otwórz cfg.bat w edytorze tekstu
- znajdź linię zawierającą ":klo" (bez cudzysłowiów)
- poniżej zmień "set C=bin\cmp.exe" na "set C=bin\klochk.exe"
- zmień "set T=0 0a" (o ile dobrze pamiętam) na: "set T=0small 1 small (...)" - przy czym należy pamiętać by nie dodawać zbyt wiele testów, bowiem skrypt może nie wystartować.
- teraz wystarczy już tylko uruchomić skrypt (polecenie "ocen klo") i automatycznie zostaną sprawdzone wcześniej ustawione testy


Jakby ktoś chciał to mogę także udostępnić kod źródłowy generatora testów wraz ze skryptami Pythona (jeden generuje iny, drugi outy).

Pozdrawiam,
Artur Jamro "Mrowqa"
Hmm, zaraz ogarnę własny program sprawdzający, który gdzieś tam mam i sprawdzę wyjścia :)

Cóż.. wybaczcie, mam jeszcze gdzieś błąd, więc może ktoś inny sprawdzi paczkę kolegi wyżej.
AC na paczce.
Potwierdzam wszystkie outy. O ile dobrze napisałem sprawdzarkę ...
BTW Twoja sprawdzarka na moim komputerze się nie kompiluje.. :)
> BTW Twoja sprawdzarka na moim komputerze się nie kompiluje.. :)
Jaki konkretnie błąd otrzymujesz? Jeśli korzystasz z GCC to kompilujesz z ustawioną flagą --std=c++11 (tudzież w przypadku starszych wersji kompilatora: --std=c++0x)?

Edycja: znalazłem błąd w kodzie sprawdzaczki - wrzuciłem już poprawioną wersję.
z flagą --std=c++0x

klochk.cpp: In function ‘void loadAnswer(std::string, std::vector<int>&)’:
klochk.cpp:92:9: error: ‘exit’ was not declared in this scope
exit(1);

Ponieważ nie załączyłeś:biblioteki stdlib.h
> Ponieważ nie załączyłeś:biblioteki stdlib.h
Nie próbowałem w sumie kompilować pod GCC - mój błąd - choć i tak myślę, iż każdy jest w stanie sobie z tym samodzielnie poradzić :) W celu kompilacji u siebie wykorzystałem MSVC i zapomniałem, że w dostarczonym SDK biblioteki standardowej pliki nagłówkowe include'ują masę innych nagłówków - stąd u mnie to się skompilowało. Dzięki za uwagę! Poprawiłem kod na pastebinie.
Dzięki Mrowqa za programik i testy - przydały się ;)
Jak korzystać ze sprawdzaczki?
Dopisałem notkę w pierwszym poście, choć w sumie pkt.1 wynika z kodu źródłowego programu, a pkt.2 z pliku "info.txt" dołączonego do skryptu ocen.
Próbowałem użyć twojej sprawdzaczki w oitimetoolu w ocen-linux i gdy odpowiedź jest zła, to wypisuje tak jak masz w kodzie konkretnie dlaczego, ale gdy jest dobra, to wypisuje "ZŁA ODPOWIEDŹ" co jest już tylko w kodzie samego skryptu ocen. Wygląda na buga w komunikacji między jednym a drugim.
Masz aktualną wersję, tj. 1.2? Dostępna na pastebinie w pierwszym poście.
Jakie macie czasy na dużych testach z paczki?
Bo u mnie samo wypisywanie trwa ok. 10s i nie wiem czy to dobry czas.
Używasz cin i cout oraz <<endl;, tak? Jeżeli tak, to z tego powodu tak się dzieje.
wypisuje z cout, bez endl oraz używam ios_base::sync_with_stdio(0); tak jak zalecano na stronie OI. Czy można wypisywać to szybciej?
Można chyba(?) użyć put(get)chara z własną implementacją konwersji int na char[] i char[] na int. U mnie taki zabieg potraja szybkość I/O w tym zadaniu w stosunku do cin/cout bez synchronizacji z stdio.
> Masz aktualną wersję, tj. 1.2? Dostępna na pastebinie w pierwszym poście.

Tak. W kodzie sprawdzaczki ocen pod linuxa
> CHK_RES=`head -n1 $TMP_FILE`
> if [ "$CHK_RES" = "OK" ] ; then
> > TST_RES="OK"
> else
> > TST_RES="ZLA ODPOWIEDZ"
> fi
gdzie CHK_RES zdaje się przy twojej sprawdzaczce być pusta, podczas gdy przy dołączanej przez nich, przy dobrej odpowiedzi zawiera właśnie "OK" :P
@Maciek,
To wypisywanie to jakiś bullshit. Nie powinno (nie może nawet) tyle trwać, nie zdiagnozuję niestety - mam za mało danych. Jak mierzysz czas tego wypisywania, na wyjście konsoli czy do pliku?
@Krzysztof Maziarz
Nie spodziewałem się tego, iż są nieco inne założenia pod Linuxa i Windowsa. Znajomi co testowali pod Linuxem nie wspominali mi o tym fakcie i mówili, że sobie poradzili :P Dzięki za info, poprawię kod.
na wyjście konsoli
Bufor konsoli ma pewną (ograniczoną) prędkość wypluwania wyjścia, więc to jest w miarę normalne. Przekieruj I/O na pliki i wtedy zmierz czas, powinno być lepiej.
@Artur Jamro
Potwierdzam paczkę.
@Artur Jamro
Już sprawdzaczka działa w porządku, potwierdzam ją, i całą paczkę ;)
Mam wątpliwość co do poprawności testu klo104small:
IN
14 8 8
1 4 2 1 1 1 1 1 1 7 1 1 1 1
OUT
0

W IN mamy podane, że 8 jest na początku i końcu, zaś do dyspozycji mamy jedną 8. To jest zgodne z treścią?
W drugim temacie padło identyczne pytanie. Administracja twierdzi, że jest.
@Krzysztof Krawczyk To znaczy że musimy sprawdzać czy wystarczy nam klocków na ustawienie z przodu i z tyłu ?

Tzn Bitek mógł się w tej kwestii pomylić ? Chcąc od nas rozmonożenia klocków ?
Pamiętał, że ten kolor był na obu krańcach, ale zgubił kilka klocków...
Czy pytanie o czas nie będzie sprzeczne z regulaminem? :) Jeżeli nie, to jakie mniej więcej macie na dużych testach?
<1s.
Czym mierzycie czas ? Tym narzedziem oitimetool?