Pravidla soutěže PilsProg
Tento dokument obsahuje oficiální pravidla soutěže v programování PilsProg, jejímž garantem je katedra informatiky a výpočetní techniky fakulty aplikovaných věd Západočeské univerzity v Plzni (KIV FAV ZČU).
Soutěž PilsProg je určena studentům středních škol starších 15 let. Organizátor může pravidla pro jednotlivé fáze a ročníky soutěže upravovat. Definitivní podoba pravidel je zveřejněna na webových stránkách soutěže nejpozději týden před začátkem kvalifikačního kola soutěže.
§1 Všeobecná ustanovení
PilsProg je soutěž v programování pro studenty středních škol starších 15 let.
Soutěž probíhá ve dvou kolech:
- kvalifikační
- finálové
Pro obě kola soutěže platí totožná pravidla s jedinou výjimkou - viz §7.2 Hodnocení finálového kola.
§1.1 PilsProg Lite
Soutěži předchází kolo PilsProg Lite, které je určeno pro studenty základních a středních škol starších 15 let. Toto kolo je soutěžně-výukové a je koncipováno pro začínající programátory.
Výsledky z kola PilsProg Lite nemají vliv na umístění v hlavní soutěži. Soutěžící, kteří se chtějí zůčastnit hlavní soutěže (tj. kvalifikačního a finálového kola) se mohou zůčastnit PilsProg Lite. Jejich účast však není vyžadována ani předpokládána.
Kolo PilsProg Lite je hodnoceno samostatně. Pro PilsProg Lite platí stejná pravidla jako pro kvalifikační kolo.
§1.2 Poruchy v provozu technických systémů
Poruchy v provozu technických systémů (server, počítač) a to jak na straně soutěžícího, tak na straně garanta soutěže, nejsou důvodem k prodloužení termínu odevzdání úloh či jakéhokoliv "odpočítávání" času.
§2 Účastníci soutěže
§2.1 PilsProg
Kvalifikačního kola se mohou zúčastnit jednotlivci - studenti středních škol starších 15 let. Soutěžící musí být ve školním roce, ve kterém se účastní soutěže, studentem střední školy. Účastník soutěže je povinen se zaregistrovat (viz dále).
§2.2 PilsProg Lite
PilsProg Lite se mohou zúčastnit jednotlivci - studenti základních a středních škol starších 15 let. Soutěžící musí být ve školním roce, ve kterém se účastní soutěže, studentem základní nebo střední školy. Účastník soutěže je povinen se zaregistrovat (viz dále).
§3 Registrace
V rámci registrace zájemce o účast v soutěži potvrzuje svůj věk (15 let nebo vyšší), dává souhlas se zveřejněním svého jména a výsledku, kterého v soutěži dosáhl, na webových stránkách soutěže po dobu 36 měsíců a dává souhlas se zpracováním osobních údajů pořízením fotografické, audio nebo video dokumentace. Dále je poučen o zpracování osobních údajů.
Pokud zájemce o účast v soutěži nesouhlasí s uvedenými body, nebo mu ještě nebylo 15 let, nemůže se registrovat a tedy ani zůčastnit soutěže.
Soutěže se mohou zúčastnit jen zaregistrovaní účastníci, kteří splňují podmínky soutěže. Registrace (elektronickým systémem) je umožněna pouze v době uvedené v harmonogramu soutěže. Umožní vytvoření konta, o čemž je soutěžící vyrozuměn zasláním registračního e-mailu na vyplněnou adresu. Každý zaregistrovaný uživatel si může ještě před započetím soutěže zkusit vyřešit zadání ilustračních úloh. Prostudujte si také naše doporučení a často kladené dotazy, a to zejména v případě, že nebude odevzdané řešení libovolné z ilustračních úloh přijato jako správné.
§4 Průběh soutěže
Cílem kvalifikačního a finálového kola hlavní soutěže i kola PilsProg Lite je vytvoření zdrojových kódů správných řešení co největšího počtu úloh a jejich odevzdání v co nejkratším čase prostřednictvím webového odevzdávacího systému. Jako řešení je možno odevzdat zdrojový soubor programu napsaný v programovacím jazyku C, C++, Java, nebo Pascal. Zdrojový soubor musí mít jednu z přípon .c, .cpp, .java, .pas odpovídající zvolenému programovacímu jazyku. Názvy zdrojových souborů volte v souladu se syntaktickými pravidly zvoleného programovacího jazyka, není nutno použít název souboru shodný s názvem úlohy, kterou chcete odevzdat. Závazné jsou pouze přípony souborů. Ve zdrojových souborech (ani v jejich názvech či v komentářích) není dovoleno používání diakritiky. Program nesmí být závislý na přítomnosti žádného externího souboru a ani nesmí žádný takový soubor vytvářet. Vstup je načten ze standardního vstupu (klávesnice) a výstup se vypisuje na standardní výstup (obrazovka). Každé řešení může být napsané v libovolném z uvedených programovacích jazyků bez ohledu na předešlá odevzdaná řešení.
Odevzdané programy se v systému automaticky přeloží, spustí a otestuje se správná funkčnost. Každé odeslané řešení je potom buď přijato jako vyhovující, nebo je odmítnuto. Nebude-li řešení přijato, je možné odevzdat další řešení. Odmítnutá odevzdání jsou evidována a pouze ve finálovém kole penalizována (viz §7 Hodnocení soutěže). Celou tuto činnost automaticky bez zásahu člověka (ale za dozoru rozhodčích) vykoná a výsledek testování odevzdaného řešení bude soutěžícím prezentovat systém na webové stránce. Seznam všech zpráv systému a způsob hodnocení je uveden v §6 Validační zprávy.
Na průběh soutěže a automatické vyhodnocování řešení dohlížejí rozhodčí. Rozhodčími jsou většinou členové akademické obce FAV ZČU. Rozhodčí mají konečnou pravomoc rozhodovat, zda-li jsou uvedená řešení správná či nikoliv. Proti verdiktu rozhodčích není odvolání.
Výsledky odevzdávání soutěžícího jsou zveřejňované na webové stránce soutěže PilsProg v průběhu daného kola soutěže. Po ukončení příslušného soutěžního kola budou zveřejněny celkové výsledky tohoto kola.
V případě problémů s porozuměním zadání se mohou soutěžící zeptat rozhodčích prostřednictvím elektronické pošty. Pokud rozhodčí uznají, že zadání je skutečně nejasné, budou o tom informovat všechny soutěžící.
§4.1 Průběh kvalifikačního kola
Kvalifikační kolo bude probíhat vzdáleně prostřednictvím webových stránek soutěže. V termínu zahájení kvalifikačního kola podle harmonogramu soutěže bude zveřejněn daný počet úloh. Řešení úloh je možné odevzdat pouze do termínu ukončení kvalifikačního kola podle harmonogramu.
Soutěžící mohou používat libovolnou dostupnou literaturu.
§4.2 Průběh finálové kola
Finálového kola soutěže se zúčastní nejlepší účastníci kvalifikačního kola. Soutěž bude probíhat na určeném místě (učebna KIV) a bude časově omezena s ohledem na počet řešených úloh.
Soutěžící mohou používat pouze tištěnou literaturu a nainstalovanou off-line nápovědu dostupnou v učebně, ve které se bude finále konat. Soutěžící nemohou používat vlastní počítače.
§4.3 Průběh PilsProg Lite
Kolo PilsProg Lite bude probíhat prostřednictvím webových stránek soutěže vzdáleně. Kolo je rozděleno na tři části. V termínu zahájení každé části podle harmonogramu soutěže bude zveřejněn daný počet úloh. Řešení úloh je možné odevzdat pouze do termínu ukončení dané části PilsProg Lite podle harmonogramu.
Jednotlivé části PilsProg Lite budou probíhat podobně jako kvalifikační kolo. K dipozici bude navíc online komunikace (prostřednictvím Facebooku, případně emailu) poskytující studentům pomoc s řešením jednotlivých úloh dané části PilsProg Lite. Pomocí se rozumí nápověda s postupem či konkrétním problémem, nikoliv vyzrazení řešení.
§5 Programovací jazyky (použité verze překladačů)
Soutěžící smí používat funkce poskytované jednotlivými programovacími jazyky. Není však povoleno:
- otevírat jiné soubory než standardní vstup a standardní výstup
- používat víc než jeden proces
- používat jakékoliv síťové prostředky
Překladače jazyků C, C++, Java a Pascal jsou na validačním serveru nainstalovány v těchto verzích a se standardními knihovnami:
-
gcc (verze 8.3.0):
http://gcc.gnu.org/U jazyka C je použit standard C18. U jazyka C++ je podobně použit standard C++17.
Pro programy v jazyce C je překlad řešen příkazem:
gcc -std=c18 -lm -O2 vstup.c
Pro programy v jazyce C++ je překlad řešen příkazem:
g++ -std=c++17 -lm -O2 vstup.cpp
-
Java (verze 1.8.0):
http://www.oracle.com/technetwork/java/javase/downloads/index.htmlZ bezpečnostních důvodů není dovoleno vytváření vlastních balíků (package).
-
Free Pascal (verze 3.0.4):
http://www.freepascal.org/
Pro psaní programů v kvalifikačním kole můžete použít vývojové prostředí dle vlastní preference. Během finálového kola budou k dispozici výše zmíněné překladače a následující vývojová prostředí:
-
DevC++ (verze 6.3):
Nejnovější verzi DevC++ lze stáhnout na http://sourceforge.net/projects/orwelldevcpp/Pro překlad zdrojových souborů v jazyce C je třeba ukládat tyto soubory s příponou .c a ne .cpp, jak je standardně nastaveno. Navíc je nutné zapnout podporu standardního ANSI C v nastavení překladače C.
-
Eclipse (2022-12):
Nejnovější verzi Eclipse lze stáhnout na http://www.eclipse.org/downloads/ -
FreePascal IDE (verze 1.0.12, verze překladače 3.0.4):
Nejnovější verzi FreePascal IDE lze stáhnout na http://www.freepascal.org/download.var
§6 Validační zprávy
Výsledek testování odevzdaného řešení má podobu právě jedné zprávy následující tabulky:
Zpráva | Význam |
---|---|
Chyba při kompilaci | Překlad zaslaného zdrojového kódu skončil chybou. |
Správné řešení | Program byl uznán jako správný a daná úloha byla úspěšně vyřešena. |
Chybné řešení | Program byl spuštěn, skončil buď předčasně chybou při výpočtu nebo vydal nějaké výsledky, ale tyto výsledky nejsou správné. |
Překročení časového limitu | Program byl úspěšně přeložen a spuštěn, ale neskončil během požadovaného časového limitu. Buď se v něm vyskytla nekonečná smyčka, nebo byl použit málo efektivní algoritmus. |
Pouze zpráva Správné řešení znamená, že bylo řešení přijato jako vyhovující. Všechny ostatní zprávy znamenají odmítnutí řešení. Pokud je řešení již přijato, není možno stejnou úlohu znovu odevzdat.
§7 Hodnocení soutěže
Pro každou úlohu, která bude uznána jako správná (tj. Správné řešení), se počítá čas v hodinách od zahájení kola soutěže až do okamžiku, kdy byla úspěšně odevzdána. Rovněž se evidují všechna (předcházející) nesprávná odevzdání řešení úlohy.
§7.1 Hodnocení kvalifikačního kola
Prvním kritériem, podle kterého jsou soutěžící hodnoceni, je počet odevzdaných správných řešení. To znamená, že ve výsledném žebříčku jsou soutěžící seřazeni podle počtu vyřešených úloh (čím víc vyřešených úloh, tím lepší umístění).
V případě, že více soutěžících vyřeší stejný počet úloh, jsou tito seřazeni podle druhého kritéria, kterým je součet časů potřebných ke správnému vyřešení jednotlivých odevzdaných úloh (čím menší součet časů, tím lepší umístění). Za problémy, které nebyly vyřešeny, se neprovádí žádná penalizace.
§7.2 Hodnocení finálového kola
Hodnocení finálového kola se provádí podle kriterií hodnocení kvalifikačního kola, navíc se však za každé odmítnuté odevzdání u splněné úlohy připočítává penalizace 10 minut do celkového času řešení.
Vítězi soutěže PilsProg jsou první tři úspěšní řešitelé finále. Úspěšný řešitel je každý účastník finále, který vyřeší alespoň dvě úlohy.
§7.3 Hodnocení PilsProg Lite
Hodnocení PilsProg Lite se provádí podle kritérií hodnocení kvalifikačního kola. Všechny tři části se počítají dohromady.
§8 Fair play
Soutěžící se registrací zavazují dodržovat pravidla soutěže. Dále prohlašují, že všechna jejich odevzdaná řešení jsou jejich vlastní, které sami vytvořili a nepoužili řešení (i jejich části), které místo nich vytvořil někdo jiný. Též se zavazují, že nebudou s vypracováním řešení pomáhat jiným soutěžícím.
V případě zjištění jakéhokoliv porušení pravidel bude soutěžící diskvalifikován.