Skip to content

[PL] 1. Podstawowa paczka

niedziol edited this page May 12, 2020 · 1 revision

W jaki sposób zadanie jest sprawdzane?

Program wysłany do oceny na SIO2 jest uruchamiany na przygotowanych przez autora zadania testach. Każdy test jest opisany przez plik wejściowy, plik wyjściowy, limit czasu oraz limit pamięci. Zawartość pliku wejściowego jest przekazywana na standardowe wejście przesłanego do oceny programu. Jeżeli program zakończy się poprawnie, a podczas wykonania nie przekroczy limitu czasu ani limitu pamięci, jego wyjście jest porównywane z zawartością pliku wyjściowego. Jeżeli wyjście programu jest zgodne z oczekiwanym (tj. opisanym w pliku wyjściowym) wyjściem, za dany test przyznawane są punkty.

Czym jest paczka

Paczka to skompresowane archiwum które zawiera m. in. treści zadań i testy. Dopuszczalne formaty to: .tar, .tar.bz2, .tar.gz, .tgz, .tz2 oraz .zip. Wewnątrz archiwum powinien znajdować się katalog o nazwie odpowiadającej skrótowi zadania. Skrót zadania to ciąg małych liter alfabetu łacińskiego (tradycyjnie o długości 3 znaków) identyfikujący zadanie. Zazwyczaj są to pierwsze trzy litery nazwy zadania. Spróbujmy przygotować teraz najprostszą paczkę.

Zadanie

Przygotujemy paczkę dla zadania, które nazwiemy Kwadrat i opatrzymy skrótem kwa. Jako rozwiązania wymagać będziemy programu podnoszącego otrzymaną na wejściu liczbę do kwadratu i wypisującego wynik na standardowe wyjście. Paczkę, którą omawiamy poniżej, można znaleźć tutaj.

Katalogi

Najprostsza paczka musi zawierać poniższe katalogi:

  • doc – z treścią zadania
  • in – pliki wejściowe
  • out – pliki wyjściowe
  • prog – opcjonalne programy (w przypadku tego zadania pozostanie pusty)

Treść

Treść zadania najłatwiej dostarczyć w formacie PDF. Możemy wygenerować go w dowolny sposób (TeX, MS Word, Google Docs). W przypadku naszego zadania gotową treść umieścimy w pliku kwa/doc/kwazad.pdf.

Pliki wejściowe i wyjściowe

Na SIO2 testy oznaczane są kolejnymi liczbami naturalnymi. Nazwy plików wejściowych składają się ze skrótu zadania, numeru testu, a ich rozszerzenie to .in. Dla plików wyjściowych rozszerzenie to .out.

Przygotujmy teraz kilka testów do naszego zadania. W przypadku tak prostego zadania możemy wygenerować pliki wyjściowe, używając kalkulatora. Jeśli zadanie będzie trudniejsze, wygodniej będzie to zrobić, korzystając z (napisanego wcześniej) rozwiązania wzorcowego.

Stwórzmy nasz pierwszy test, będzie to kwa/in/kwa1.in. Zgodnie z plikiem kwa.pdf powinien on zawierać jedną liczbę z zakresu [-1e9, 1e9]. W naszym przypadku będzie to liczba 0. Bardzo ważne jest to, żeby format pliku wejściowego dokładnie pokrywał się z dostarczoną przez nas treścią. W szczególności należy pamiętać o białych znakach (spacjach, tabulacjach, enterach).

Odpowiedzią oczywiście będzie liczba 0, więc dodajmy ją do pliku kwa/out/kwa1.out.

Powyższy test (i kilka dodatkowych) dodano w plikach do folderów kwa/in oraz kwa/out. W szczególności pojawił się test kwa2.in zawierający liczbę ujemną i test kwa5.in zawierający liczbę, która po podniesieniu do kwadratu przekroczy typ int w C++. O tym jak układać dobre testy (poprawne i pełne) będziemy mówić w następnych częściach tego poradnika.

Wrzucenie paczki na SIO2

Musimy teraz wrzucić paczkę na sio2. W tym celu skompresujemy stworzony przez nas folder do jednego z dozwolonych formatów. Wybierzmy sobie rozszerzenie .zip. Niezależnie od systemu operacyjnego wykorzystamy do tego program 7-Zip. Na Windowsie musimy kliknąć prawym przyciskiem myszy na folder, wybrać 7-Zip i Dodaj do kwa.zip. Na Linuxie możemy zrobić to za pomocą poniższej komendy w terminalu.

7z a -tzip kwa.zip kwa

Teraz musimy wejść w kontest, do którego chcemy dodać zadanie. Po lewej stronie powinniśmy zobaczyć przycisk Administracja Konkursu. Po kliknięciu na niego wyświetli się lista, z której wybieramy Zadania, a potem Dodaj zadanie. Wybieramy rundę i dodajemy skompresowany plik. Po kliknięciu Wyślij zostaniemy przeniesieni do strony Paczki do zadań, gdzie po chwili oczekiwania (i odświeżeniu strony) nasza paczka zaświeci się na zielono.