Programátorské olympiády

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 23. května 2021; kontroly vyžadují 11 úprav .

Programátorská olympiáda ( Informatická olympiáda ) je intelektuální soutěž pro řešení různých problémů na počítači , k jejichž řešení je nutné vymyslet a aplikovat libovolný algoritmus nebo program v některém z programovacích jazyků . Účastníci dostávají zpravidla soubor několika úkolů. Problém je považován za vyřešený, pokud účastníci byli schopni vytvořit program, který správně funguje na testech připravených porotou. Testy jsou účastníkům neznámé.

Olympiády jsou individuální i týmové. Týmové olympiády se obvykle účastní 3 osoby a po celou dobu olympiády mají k dispozici 1 počítač k řešení problémů. K pořádání takových soutěží se používají specializované softwarové turnajové systémy.

Formát úlohy

Problémy sportovního programování jsou jedinečné v tom, že odpovědí na ně je program, který problém optimálně vyřeší najednou pro všechna možná vstupní data.

Pokud například nejjednodušší matematický problém zní jako „Sečtěte dvě čísla: 4 a 5 “ , pak nejjednodušší programovací problém bude znít jako „Napište program, který sečte libovolná dvě čísla“. V tomto případě bude účastník požádán, aby napsal program, který načte dvě čísla prostřednictvím standardního vstupního proudu a jedno číslo – odpověď na problém – odešle do standardního výstupního proudu . Někdy organizátoři soutěží nabízejí čtení a výstup dat jiným způsobem, například prostřednictvím . A+B je klasická výzva pro seznámení s tímto formátem.

Porota soutěže se samozřejmě musí nějak postarat o to, aby program účastníka fungoval správně pro jakákoli data. K tomu je před soutěží připravena sada testů , na kterých budou spuštěna řešení účastníků a sada odpovědí na ně. Pokud porota a účastník odpoví na všechny testy stejně, obdrží rozhodnutí plné skóre, pokud ne, částečné nebo nulové. Na většině olympiád je kontrola automatizovaná a provádí se ihned poté, co účastník odevzdá řešení, což mu umožňuje rychle ho informovat o výsledku a dát mu šanci program upřesnit.

Často se kontroluje nejen správnost řešení, ale také účinnost. K tomu testovací systém zavádí limit na množství procesorového času, který může načtený program využít, a vstupní data v některých testech jsou vybírána tak, že neefektivní řešení běží příliš dlouho. Výsledkem je, že takové řešení v těchto testech neprojde a získá neúplné skóre.

Autoři se snaží vybírat vstupní data tak, aby doba běhu neefektivního řešení mnohonásobně překročila stanovený limit, čímž se eliminuje vliv rozdílů v charakteristikách procesoru, chyb měření, Turbo Boost a dalších faktorů na výsledek. Současně se měří čas procesoru , nikoli skutečná doba provádění, takže zatížení procesoru testovacího serveru jinými úkoly by také nemělo ovlivnit výsledek.

Stavové texty

Ve světě sportovního programování existuje určitý formát pro problémové stavy. Ačkoli to není oficiálně nikým standardizováno, de facto soutěže po celém světě rozdělují podmínky problémů do následujících pododstavců:

olympiády v SSSR a Rusku

Mezi školáky

První olympiáda v programování mezi školáky v Moskvě se konala v roce 1981 (byli pouze 4 účastníci) a první olympiáda v SSSR (pod názvem Olympiáda v informatice) se konala mezi školáky a konala se v roce 1988 ve Sverdlovsku [1] . Olympiády v informatice se v budoucnu staly součástí Všesvazových (a po rozpadu SSSR - Všeruských) oborových olympiád pro školáky.

Olympiády pro školáky jsou tradičně individuální soutěže, pořádané podle víceúrovňového systému, v několika fázích: okresní, městské, krajské, celostátní olympiády. Vítězové celoruské olympiády získávají právo účastnit se mezinárodních olympiád v informatice .

Vypsané olympiády

Ruská rada olympiád pro studenty škol (RSOS) každoročně sestavuje zvláštní seznam olympiád, který může zahrnovat osobní olympiády ve sportovním programování. Takové soutěže probíhají vždy ve dvou fázích: kvalifikační (online) a finálové (osobně, ale byly povoleny výjimky z důvodu pandemie COVID-19 ). Pouze orgány v oblasti školství a vysoké školy mají právo pořádat seznamové olympiády. [2]

Vysoké výsledky na takových olympiádách mohou poskytnout určitá privilegia při vstupu na univerzitu , včetně přijetí bez vstupních testů nebo zaokrouhlení výsledků USE v informatice na 100 bodů (pokud student dosáhl alespoň 75 bodů).

Soutěže školních týmů

Mezi školáky se konají i víceúrovňové týmové olympiády, a to podle pravidel podobných pravidlům mezinárodních studentských olympiád [3] [4] .

Nejznámější týmovou olympiádou je Všeruská týmová olympiáda pro školáky v programování [5] (VKOSHP). Obvykle se koná začátkem prosince v různých městech Ruska: Petrohrad, Barnaul a města v dalších zemích. Na tuto olympiádu se musíte ve svém regionu kvalifikovat, obvykle jede 10-20 týmů z Moskvy, o něco méně z Petrohradu [6] .

Studenti

Olympiády v informatice mezi studenty SSSR v celé zemi se nekonaly. Počínaje rokem 1996 se studenti ruských univerzit začali účastnit soutěží zařazených do systému World Team Programming Championship mezi studenty , pořádaných americkou asociací ACM .

Nadšenci také organizovali různé vnitrouniverzitní a meziuniverzitní olympiády. Obvykle jsou tyto olympiády sponzorovány společností zabývající se vývojem softwaru, která má zájem přilákat talentované studenty, aby s nimi spolupracovali.

Testovací systémy a platformy

Proces ověřování řešení vyžaduje výpočetní výkon, přesné měření spotřebovaných zdrojů, podporu velkého množství kompilátorů, izolaci spustitelných programů a mnoho dalších složitých technických řešení. V Rusku bylo vyvinuto několik systémů a platforem pro programátorské soutěže:

název Stát Zapsáno v Poznámka
odsoudit Podporováno, licencováno pod GPL Xi Open source systém vyvinutý v roce 2000.

Vzhledem ke zvláštnostem architektury nepodporuje vícejádrové testování, což testování značně zpomaluje. V soutěži se však stále používá.

PCMS Podporováno Jáva Byla vytvořena v roce 2004 na univerzitě ITMO za účelem pořádání vlastních olympiád a nadále se rozvíjí v jejích zdech.

Na tomto testovacím systému se koná Všeruská olympiáda školáků .

seřaď mě Podporováno Jít Projekt byl zahájen 1. října 2021.

Podle tvůrců jde o nejrychlejší testovací systém na světě, který dokáže urychlit nejen kontrolu, ale i kompilaci programů. [7] Jediný projekt v Rusku, který se vyvíjí bez podpory jakékoli univerzity, nadace nebo korporace.

Codeforces Podporováno Jáva Vytvořeno v roce 2010 na Saratovské státní univerzitě .

Nejoblíbenější sportovní programovací platforma. Knihovna testlib.h vytvořená Codeforces je de facto standardem pro vývoj úloh. Projekt je lokalizován do angličtiny a vyvinut s podporou ITMO University a zahraničních sponzorů.

Soutěž Yandex Podporováno Krajta Projekt Yandex . Lze použít pro vlastní soutěže. Využívá se především pro výčtové olympiády a místní tréninky.
Soutěžící Projekt uzavřen Delphi / FreePascal Vytvořeno na Státní technologické akademii Kovrov v roce 2008. Jednalo se o samostatný server obsahující asi 130 úloh.
Soudce Timus Online Udržovaný, ale nevyvíjený neznámý Velký online archiv problémů vyvinutý v roce 2000 na Uralské federální univerzitě .
acm.sgu.ru Projekt uzavřen neznámý Místo pro studenty školení Saratov státní univerzity .
acmp.ru Podporováno .SÍŤ Velký archiv úkolů, vyvíjený od roku 2006 s podporou Krasnojarského Pionýrského paláce . Tato stránka hostí školní a obecní etapy celoruské olympiády pro školáky (pouze pro Krasnojarské území).

olympiáda v Bělorusku

Olympiáda mezi školáky

V Bělorusku se olympiáda v programování (v informatice) mezi školáky koná v několika fázích.

První etapou je vnitroškolní olympiáda. Provádí se mezi studenty konkrétní vzdělávací instituce. V důsledku soutěže postupují vítězové do další fáze. K pořádání takových olympiád se používají testovací systémy (turnajové systémy). Jaký systém použít, rozhodují organizátoři olympiády. Například v Brestu se používá systém Brain Training , v některých institucích systém eJudge

Druhou etapou je obecní olympiáda (někdy se jí říká městská). Taková olympiáda se koná mezi vítězi předchozí fáze, zastoupenými každou školou v určité oblasti města. Například v Brestu se konají dvě regionální olympiády: pro Moskevský a Leninský okres. Vítězové z každého okresu postupují do dalšího kola. Závaznou podmínkou pro pokračování účasti v olympiádě (přechod do další fáze) je získání více než 50 % možných bodů (v akademickém roce 2014-2015 bylo toto pravidlo zrušeno).

Třetí etapou je krajská olympiáda. Zde se účastní vítězové předchozí etapy (krajské olympiády). Celé Bělorusko je rozděleno do 6 regionů (Brest, Vitebsk, Mogilev, Grodno, Gomel a Minsk), stejně jako město Minsk. Státní vzdělávací instituce „Lyceum Běloruské státní univerzity“ navíc působí jako samostatný tým. V každém z nich jsou vybráni účastníci do další fáze olympiády.

Čtvrtou etapou je republiková olympiáda (konečná fáze). Vítězové krajských olympiád soutěží o titul nejlepšího programátora mezi školáky.

Nejlepší účastníci republikové olympiády (zpravidla pouze od 9-11 ročníků) jsou vybíráni na soustředění na Mezinárodní olympiádu v informatice. Během soustředění se z nich vybírá finální tým.

ACM International Collegiate Programming Contest

Největší mezinárodní soutěží v programování studentských týmů je ACM International Collegiate Programming Contest . Generálními sponzory šampionátu jsou společnosti jako Microsoft a IBM . V roce 2004 se ho zúčastnilo 3150 týmů ze 75 zemí.

Týmy z Ruska se opakovaně staly vítězi této prestižní soutěže [8] [9] [10] [11] [12] . V důsledku úspěšných výkonů byly týmy poctěny setkáním s prezidentem Ruské federace [13] [14] [15] . Jeden z trenérů a organizátorů těchto olympiád v Rusku byl oceněn Ceny prezidenta Ruské federace a vlády Ruské federace v oblasti vzdělávání [16] .

Další významné soutěže

Mnoho soutěží ve sportovním programování přímo nesouvisí se vzdělávacím systémem, to znamená, že se jich účastní i profesionální programátoři. Populární soutěží sportovního programování ve světě je zdroj TopCoder , který pravidelně pořádá kola (SRM), jejichž výsledky tvoří hodnocení účastníků, a také každoroční TopCoder Open . Ruský zdroj Codeforces také pořádá pravidelná kola [16] na základě jejichž výsledků se tvoří jeho vlastní hodnocení. Na konci roku 2021 si v Rusku získala popularitu platforma Sort Me , která měsíčně hostí Sort Me Round [17] podle upravených pravidel ACM [18] .

Velké IT společnosti pořádají pravidelné a obvykle individuální soutěže v programování, jako je Google Code Jam , Facebook Hacker Cup , Russian Code Cup .

Poznámky

  1. Olympiáda - Historie olympiády (nepřístupný odkaz) . Získáno 9. září 2011. Archivováno z originálu 10. srpna 2011. 
  2. Postup při pořádání olympiád pro školáky . Ruské noviny . Získáno 25. ledna 2022. Archivováno z originálu dne 25. ledna 2022.
  3. Uralská regionální programová olympiáda (nepřístupný odkaz) . Centrum klasického vzdělávání UrFU B. N. Jelcin (USU). Získáno 9. listopadu 2011. Archivováno z originálu 6. října 2010. 
  4. Olympiády v informatice. Petrohrad, Rusko . Získáno 9. listopadu 2011. Archivováno z originálu 17. listopadu 2011.
  5. Olympiády v informatice. Petrohrad, Rusko . neerc.ifmo.ru. Získáno 27. července 2016. Archivováno z originálu 24. srpna 2016.
  6. SN na VKOSHP - 2015  (anglicky) . vkoshp2015.snarknews.info. Získáno 27. července 2016. Archivováno z originálu 8. srpna 2016.
  7. Seřadit mě . telegram . Získáno 9. května 2022. Archivováno z originálu dne 9. května 2022.
  8. SnarkNews . Získáno 18. března 2022. Archivováno z originálu dne 14. dubna 2021.
  9. Mistři světa z ITMO ve zprávách REN TV :: :: Video na RuTube  (nepřístupný odkaz)
  10. V Petrohradu otevřena programovací akademie - Natalya Sherpina - „Mistři světa dostali klastr“ - Rossijskaja Gazeta - Otevřeno v Severním hlavním městě ... . Staženo 2. května 2020. Archivováno z originálu 1. prosince 2017.
  11. Studenti ITMO se stali mistry světa v programování . Získáno 9. září 2011. Archivováno z originálu dne 3. listopadu 2010.
  12. Dmitrij Medveděv se setkal s vítězi World Programming Championship - Channel One
  13. Prezident se dnes setkal se studenty - vítězi World Programming Championship - Channel One
  14. Ruský prezident Dmitrij Medveděv bude pokračovat v tradici setkání s ruskými studenty – vítězi Mistrovství světa v programování mezi kombinovanými týmy univerzit. - RIA Novosti .... Získáno 9. listopadu 2011. Archivováno z originálu 18. ledna 2012.
  15. Tři zlaté medaile přivezli do Ruské federace vítězové planetárního šampionátu v programování - Channel One . Získáno 9. listopadu 2011. Archivováno z originálu 8. srpna 2013.
  16. ↑ 1 2 Stankevich Andrey Sergeevich  (nepřístupný odkaz)
  17. sort-me.org - Zdroj - CLIST . clist.by . Získáno 25. ledna 2022. Archivováno z originálu dne 25. ledna 2022.
  18. Roztřiď mě, roztřiď mě. Pravidla řazení . Dálnopis (24. října 2021). Získáno 25. ledna 2022. Archivováno z originálu dne 25. ledna 2022.

Odkazy