Wstęp
U części osób które wysłały rozwiązania, nie pojawiły się wyniki.
Są to rozwiązania, które się nie skompilowały. Mieli państwo przesłać plik źródłowy o odpowiednim rozszerzeniu (szczegóły w techn kaliach), który się skompiluje. Rozwiązanie, które się nie kompiluje (np. skompresowane archiwum), nie jest rozwiązaniem o które była prośba, więc jest traktowane jak brak rozwiązania.
Jednak czasami rozwiązania są zupełnie w porządku a mimo to się nie skompilowały, najczęstszymi przyczynami są:
-
Edu dokleiło (i nadal dokleja) niektórym osobom dodatkowe bajty do pliku, pochodzące z protokołu http.
-
Część osób wysłała pliki java których java nie kompiluje ze znacznikiem BOM.
-
rozwiązanie napisane w innym języku o podobnej nazwie
Pliki ze znacznikiem BOM a Java
Java nie wspiera znacznika BOM (Byte Order Mark), tak więc jeżeli ktoś wkleił kod od Microsoft Notepad lub Microsoft Visual Studio, zapisał i taki plik wysłał, to wysłał(a) plik niekompatybilny z Java, czyli narzędziem, które wybrał(a).
Nie będę jednak za taki drobiazg potrącać punktów, tak więc wrócę do ponownego sprawdzenia tych rozwiązań, tymczasem niech Państwo mają na uwadze owe własności narzędzi Microsoftu oraz Java i unikają tej sytuacji. (Korzystając z okazji pozwolę sobie na reklamę mojego ulubionego edytora: http://www.vim.org/ dostępnego na każdą platformę.)
Jedna z metod znalezionych w internecie w celu znalezienia błędu polega na zastosowaniu:
grep -rls $'\xEF\xBB\xBF' .
Wskazuje na to że problem może dotyczyć osób o numerach indeksów (obok numerów liczba plików podejrzanych o bycie dotkniętych problemem) :
Listing Plików które mogły być mieć dodatkowe bajty
s7088 - dotyczy 2 wysłanych plików s7239 - dotyczy 1 wysłanych plików s7303 - dotyczy 1 wysłanych plików
(oczywiście wyniki grep zostały dodatkowo przetworzone)
Edu dokleiło bajty http
Tak, edu dokleiło do wielu rozwiązań fragmenty protokołu http, takie jak np. ten:
ntent-Disposition: form-data; name="plik"; filename="x.cpp"
Poniższa tabelka zawiera numery indeksów osób których pliki mogą być dotknięte problemem (wybrane wyrażeniem regularnym), oraz liczności, ilu plików wysłanych przez daną osobę może dotyczyć problem.
Listing Plików które mogły być mieć dodatkowe bajty
s4156 - dotyczy 1 wysłanych plików s4900 - dotyczy 2 wysłanych plików s5228 - dotyczy 3 wysłanych plików s5660 - dotyczy 1 wysłanych plików s5676 - dotyczy 1 wysłanych plików s5709 - dotyczy 2 wysłanych plików s5999 - dotyczy 1 wysłanych plików s6016 - dotyczy 1 wysłanych plików s6320 - dotyczy 4 wysłanych plików s6340 - dotyczy 1 wysłanych plików s6420 - dotyczy 1 wysłanych plików s6468 - dotyczy 2 wysłanych plików s6508 - dotyczy 2 wysłanych plików s6522 - dotyczy 3 wysłanych plików s6620 - dotyczy 5 wysłanych plików s6668 - dotyczy 2 wysłanych plików s6678 - dotyczy 3 wysłanych plików s6686 - dotyczy 2 wysłanych plików s6696 - dotyczy 1 wysłanych plików s6789 - dotyczy 2 wysłanych plików s6947 - dotyczy 1 wysłanych plików s7072 - dotyczy 3 wysłanych plików s7079 - dotyczy 1 wysłanych plików s7309 - dotyczy 1 wysłanych plików s7310 - dotyczy 2 wysłanych plików s7313 - dotyczy 3 wysłanych plików s7337 - dotyczy 1 wysłanych plików s7341 - dotyczy 1 wysłanych plików s7372 - dotyczy 2 wysłanych plików s7415 - dotyczy 2 wysłanych plików s7439 - dotyczy 1 wysłanych plików s7461 - dotyczy 1 wysłanych plików s7474 - dotyczy 1 wysłanych plików s7480 - dotyczy 2 wysłanych plików s7495 - dotyczy 1 wysłanych plików s7703 - dotyczy 3 wysłanych plików s7795 - dotyczy 2 wysłanych plików s8035 - dotyczy 3 wysłanych plików
Rozwiązanie napisane w innym języku o podobnej nazwie
Visual C++ to nie jest C++ . C++ to to co jest opisane w standardzie. Te osoby mogą poczytać w logach z kompilacji czego nie dołaczają (include) etc. A najlepiej niech spróbują skompilować program pod gcc (narzędziem g++ - do ściągnięcia pod Windows, albo dostępne na Muszelce (patrz bss→Instrukcje→Shell).
Logi z kompilacji
Na stronie:
mogą państwo uzyskać dostęp do logów z kompilacji i procedury testowej oraz pomiarów czasu swojego programu.
Uwaga! Ta baza nie jest synchronizowana jednocześnie z pojawianiem się ocen czy rozwiązań na serwerze, stąd jeżeli nie ma od razu pliku, proszę spróbować po pewnym czasie ponownie.
Jeżeli kogoś z Państwa dotyczy problem doklejanych dodatkowych bajtów przez edu to wtedy nie będą mogli Państwo zobaczyć wyników, ze względu na zmienioną sumę kontrolną. W takim przypadku, jeżeli za dane zadanie, inne osoby w grupie już mają logi, a Pan(i) nie ma. Proszę sprawdzić na powyższych listach. Osoby ze studiów dziennych są proszone w tej sprawie na konsultacje w A3 o 17 w środę, ew mogą probować jak jestem wcześniej w 132 przez kilka grup ćwiczeniowych. Osoby z trybu zaocznego, najlepiej na zajęciach. Studenci internetowi, przez czat, ew. mailem.
Oto co oznaczają następujące komunikaty:
-
ACC - wynik obliczony przy zadanych limitach czasowych oraz pamięciowych
-
FAIL_tus - poprawna odpowiedź, ale przekroczenie limitu na czas w przestrzeni użytkownika. Obliczenia wykonały się do końca stąd wiadomo o poprawności wyniku, ponieważ limit na całkowity czas jest większy niż docelowy na przestrzeń użytkownika, a wywłaszczanie następuje po przekroczeniu sumarycznego. (Przy algorytmach o dobrej złożoności a duzej stałej czasami traktowałem ten wynk jak ACC w szczególności kiedy limit czasu był niewiele przekroczony)
-
FAIL_a - obliczenia przeprowadzone przy zadanych limitach czasowych oraz pamięciowych, ale błędna odpowiedź.
-
FAIL_e - błąd wykonania. Może oznaczać:
-
przekroczenie limitu czasu lub pamięci
-
inny błąd wykonania (np. wyjście poza tablicę itp.)
-
Jak jest liczony czas: * tus - time user space - limit - patrzymy czy obliczenia w przestrzeni użytkownika zajęły tyle ile trzeba * total time limit - limit na całkowity, realny czas po którym proces jest wywłaszczany. Taka konfiguracja została wprowadzona po tym jak okazało się po analizie wyników zadania pierwszego, że u niektórych osób Java spędza w przestrzeni jądra drugie tyle ile oni w przestrzeni użytkownika na obliczeniach.