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.