diff --git a/example_package/README.md b/example_package/README.md index c6778c50..54d56e75 100644 --- a/example_package/README.md +++ b/example_package/README.md @@ -3,38 +3,39 @@ # **Szablon paczki** -- [**Ogólne informacje**](#ogólne-informacje) -- [**doc**](#doc) - - [**talentTex.cls**](#talenttexcls) -- [**prog**](#prog) - - [**Rozwiązania**](#rozwiązania) - - [**ingen**](#ingen) - - [**inwer**](#inwer) - - [**checkerka**](#checkerka) - - [**oi.h**](#oih) - - [**Scanner (Wczytywanie)**](#scanner-wczytywanie) - - [Są 3 tryby wczytywania danych](#są-3-tryby-wczytywania-danych) - - [**Najważniejszą funkcją jest wczytywanie** i realizuje ją w następujący sposób](#najważniejszą-funkcją-jest-wczytywanie-i-realizuje-ją-w-następujący-sposób) - - [**CheckerVerdict**](#checkerverdict) - - [**checker\_test**](#checker_test) - - [**InwerVerdict**](#inwerverdict) - - [**bug**](#bug) - - [**oi\_assert**](#oi_assert) - - [**Random**](#random) -- [in i out](#in-i-out) - - [Testy ocen](#testy-ocen) - - [Generowanie](#generowanie) -- [dlazaw](#dlazaw) -- [attachment](#attachment) -- [**config.yml**](#configyml) - - [Interactive tasks](#interactive-tasks) - - [Time](#time) - - [Memory](#memory) - - [Title](#title) - - [Scores](#scores) - - [Task ID](#task-id) - - [Contest type](#contest-type) - - [Expected scores](#expected-scores) +- [**Szablon paczki**](#szablon-paczki) + - [**Ogólne informacje**](#ogólne-informacje) + - [**doc**](#doc) + - [**talentTex.cls**](#talenttexcls) + - [**prog**](#prog) + - [**Rozwiązania**](#rozwiązania) + - [**ingen**](#ingen) + - [**inwer**](#inwer) + - [**checkerka**](#checkerka) + - [**oi.h**](#oih) + - [**Scanner (Wczytywanie)**](#scanner-wczytywanie) + - [Są 3 tryby wczytywania danych](#są-3-tryby-wczytywania-danych) + - [**Najważniejszą funkcją jest wczytywanie** i realizuje ją w następujący sposób](#najważniejszą-funkcją-jest-wczytywanie-i-realizuje-ją-w-następujący-sposób) + - [**CheckerVerdict**](#checkerverdict) + - [**checker\_test**](#checker_test) + - [**InwerVerdict**](#inwerverdict) + - [**bug**](#bug) + - [**oi\_assert**](#oi_assert) + - [**Random**](#random) + - [in i out](#in-i-out) + - [Testy ocen](#testy-ocen) + - [Generowanie](#generowanie) + - [dlazaw](#dlazaw) + - [attachment](#attachment) + - [**config.yml**](#configyml) + - [Interactive tasks](#interactive-tasks) + - [Time](#time) + - [Memory](#memory) + - [Title](#title) + - [Scores](#scores) + - [Task ID](#task-id) + - [Contest type](#contest-type) + - [Expected scores](#expected-scores) ## **Ogólne informacje** @@ -85,9 +86,11 @@ Te polecenia również tworzą nagłówek "Wejście" i "Wyjście". - `\ocen{\testOcen{}{} ...}` - Lista wszystkich testów ocen. - `\testOcen{nazwa_testu}{opis_testu}` - Pojedynczy test ocen z opisem. -- `\ocenTable{}` - Tworzy tabelę z podzadaniami. Automatycznie tworzy nagłówek (Nr & Ograniczenia & Punkty). -- `\ocenRow{nr & opis & punkty}` - Pojedynczy wiersz tabeli: kolejne komórki powinny być rozdzielone znakiem &. - Jeśli chcesz mieć 2 linie w pojedynczej komórce tabeli użyj `\ocenElement{text}`. +- `\ocenTable{}` - Tworzy tabelę z podzadaniami. + Jako argument należy przekazać `\ocenRow{}{}`, dla każdego podzadania. + Opcjonalnie można podać ile punktów jest za zadanie `\ocenTable[100]{}`. + Automatycznie tworzy nagłówek (Nr & Ograniczenia & Punkty). +- `\ocenRow{punkty}{ograniczenie}` - Tworzy pojedynczy wiersz tabeli opisujący podzadanie z podaną ilością punktów i danym ograniczeniem. ## **prog** diff --git a/example_package/doc/abczad.pdf b/example_package/doc/abczad.pdf index d6f41b92..ccb93f83 100644 Binary files a/example_package/doc/abczad.pdf and b/example_package/doc/abczad.pdf differ diff --git a/example_package/doc/abczad.tex b/example_package/doc/abczad.tex index c31f8356..821cc015 100644 --- a/example_package/doc/abczad.tex +++ b/example_package/doc/abczad.tex @@ -30,9 +30,8 @@ % % Przy kompilacji testy są automatycznie czytane z folderów ./in i ./out % \ocen{text} % Lista wszystkich testów ocen. % \testOcen{text}{text2} % Pojedyńczy test ocen z opisem. -% \ocenTable{text} % Tabela z podzadaniami. -% \ocenRow{text} % Pojedyńczy wiersz tabeli: kolejne komórki powinne być rodzielone znakiem &. -% \ocenElement{text} % Jeśli chcesz mieć 2 linie w pojedyńczej komórce tabeli. +% \ocenTable[100]{text} % Tabela z podzadaniami. Opcjonalnie można podać ile punktów jest za zadanie. +% \ocenRow{point}{text} % Tworzy pojedyńczy wiersz tabeli opisujący podzadanie, o danej ilości punktów i z danym ograniczeniem. \start{} @@ -88,12 +87,10 @@ Zestaw testów dzieli się na następujące podzadania. Testy do każdego podzadania składają się z jednej lub większej liczby osobnych grup testów. -% Alternatywnie \customOcenTable{|c|c|c|}{\tc{Nr} & \tc{Ograniczenia} & \tc{Punkty}}{reszta tabeli} - \ocenTable{ - \ocenRow{1 & $\tc{n} \leq 100$ & 30} - \ocenRow{2 & \ocenElement{$\tc{n} \leq 1000$ Dwie\\ Linie} & 20} - \ocenRow{3 & Bez ograniczeń & 50} + \ocenRow{30}{$\tc{n} \leq 100$} + \ocenRow{20}{$\tc{n} \leq 1000$ Dwie\\ Linie} + \ocenRow{50}{Bez ograniczeń} } \finish{} diff --git a/example_package/doc/talentTex.cls b/example_package/doc/talentTex.cls index 1a2be40c..9d6ffda6 100644 --- a/example_package/doc/talentTex.cls +++ b/example_package/doc/talentTex.cls @@ -47,7 +47,7 @@ % \definecolor{talentBlue}{RGB}{31, 73, 125} % Ciemny %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% zmienne logiczne +% zmienne logiczne i liczniki %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newif\ifsinolshortages \sinolshortagesfalse % niedoprecyzowania \newif\ifsinolerrors \sinolerrorsfalse % bledy @@ -61,6 +61,9 @@ \newif\ifMemorydefed \Memorydefedfalse % czy podano dostępną pamięć \newif\iftimedefed \timedefedfalse % czy podano czas działania +\newcounter{subtestsCounter} % licznik podzadań w tabelce +\newcounter{sumPointCounter} % suma punktów do zdobycia w zadaniu + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Obsługa plików: inf, err %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -629,27 +632,23 @@ \item[] \textbf{\color{talentBlue}\ID#1: \ }{#2} } -\newcommand{\ocenTable}[1]{ - \customOcenTable{|c|c|c|}{\tc{Nr}&\tc{Ograniczenia}&\tc{Punkty}}{#1} -} - -\newcommand{\customOcenTable}[3]{ +\newcommand{\ocenTable}[2][100]{ + \setcounter{subtestsCounter}{0} + \setcounter{sumPointCounter}{0} \begin{center} - \begin{tabular}{#1} - \hline - #2 \\ - \hline - #3 + \begin{tabular} + {|c|l|c|} \hline + \tc{Nr} & \tc{Ograniczenia} & \tc{Punkty} \\ \hline + #2 \end{tabular} \end{center} + \ifneq{\arabic{sumPointCounter}}{#1}{% + Uwaga! W tyma zadaniu suma punktów do zdobycia wynosi \arabic{sumPointCounter} punktów. + } } -\newcommand{\ocenRow}[1]{ - #1 \\ \hline -} - -\newcommand{\ocenElement}[1]{ - \begin{tabular}{@{}c@{}} - #1 - \end{tabular} +\newcommand{\ocenRow}[2]{ + \stepcounter{subtestsCounter}% + \addtocounter{sumPointCounter}{#1}% + \arabic{subtestsCounter} & \begin{tabular}{@{}l@{}} #2 \end{tabular} & #1 \\ \hline }