Programmeringsolympiader

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 23 maj 2021; kontroller kräver 11 redigeringar .

Programmering Olympiad ( Informatics Olympiad ) är en intellektuell tävling för att lösa olika problem på en dator , för vars lösning det är nödvändigt att uppfinna och tillämpa valfri algoritm eller program på något av programmeringsspråken . Som regel får deltagarna en uppsättning av flera uppgifter. Problemet anses löst om deltagarna kunde skapa ett program som fungerar korrekt på de prov som juryn utarbetat. Testerna är okända för deltagarna.

Olympiader är individuella och lag. Lagolympiader involverar vanligtvis 3 personer och de är försedda med en dator under hela olympiaden för att lösa problem. Specialiserade mjukvaruturneringssystem används för att genomföra sådana tävlingar.

Uppgiftsformat

Sportprogrammeringsproblem är unika genom att svaret på dem är ett program som optimalt löser problemet på en gång för alla möjliga indata.

Till exempel, om det enklaste matematiska problemet låter som "Lägg till två siffror: 4 och 5 " , så kommer det enklaste programmeringsproblemet att låta som "Skriv ett program som lägger till två valfria siffror." I det här fallet kommer deltagaren att behöva skriva ett program som läser två siffror genom standardinmatningsströmmen och matar ut ett nummer - svaret på problemet - till standardutgångsströmmen . Ibland erbjuder tävlingsarrangörer att läsa och mata ut data på annat sätt, till exempel genom . A+B är en klassisk utmaning för att lära känna detta format.

Naturligtvis måste tävlingsjuryn på något sätt se till att deltagarens program fungerar korrekt för eventuell data. För att göra detta, före tävlingen, förbereds en uppsättning tester , på vilka deltagarnas lösningar kommer att lanseras, och en uppsättning svar på dem. Om juryn och deltagaren har samma svar på alla prov, kommer beslutet att få ett helt betyg, om inte, ett partiellt eller noll. Vid de flesta olympiader är kontrollen automatiserad och utförs direkt efter att deltagaren lämnat in lösningen, vilket gör att han snabbt kan informera honom om resultatet och ge honom en chans att förfina programmet.

Ofta kontrolleras lösningen inte bara för korrekthet, utan också för effektivitet. För att göra detta introducerar testsystemet en gräns för mängden processortid som det laddade programmet kan använda, och indata i vissa tester väljs så att den ineffektiva lösningen körs för länge. Som ett resultat misslyckas en sådan lösning i dessa test och får ett ofullständigt betyg.

Författarna försöker välja indata på ett sådant sätt att körtiden för en ineffektiv lösning överskrider den inställda gränsen med många gånger, vilket eliminerar påverkan av skillnader i processoregenskaper, mätfel, Turbo Boost och andra faktorer på resultatet. Samtidigt mäts processortiden och inte den verkliga exekveringstiden, så processorbelastningen på testservern med andra uppgifter bör inte heller påverka resultatet.

Villkorstexter

I en värld av sportprogrammering finns det ett visst format för problemförhållanden. Även om det inte är officiellt standardiserat av någon, delar de facto tävlingar runt om i världen in villkoren för problemen i följande stycken:

OS i Sovjetunionen och Ryssland

Bland skolbarn

Den första olympiaden i programmering bland skolbarn i Moskva hölls 1981 (det var bara 4 deltagare), och den första olympiaden i Sovjetunionen (under namnet Olympiaden i informatik) hölls bland skolbarn och ägde rum 1988 i Sverdlovsk [1] . I framtiden blev Olympiads in Informatics en del av All-Union (och efter Sovjetunionens kollaps - All-Russian) ämnesolympiader för skolbarn.

Traditionellt är olympiader för skolbarn individuella tävlingar, som hålls enligt ett system på flera nivåer, i flera steg: distrikt, stad, regionala, nationella olympiader. Vinnare av den allryska olympiaden får rätt att delta i internationella olympiader i informatik .

Listade olympiader

Varje år upprättar Russian Council of Olympiads for School Students (RSOS) en särskild lista över olympiader, som kan inkludera personliga olympiader i sportprogrammering. Sådana tävlingar hålls alltid i två steg: kvalificering (online) och final (personligen, men undantag var tillåtna på grund av covid-19-pandemin ). Endast myndigheter inom utbildningsområdet och lärosätena har rätt att genomföra listolympiader. [2]

Höga resultat som visas vid sådana olympiader kan ge vissa privilegier när man går in på ett universitet , inklusive antagning utan antagningsprov eller avrundning av USE-resultaten i datavetenskap till 100 poäng (om studenten fick minst 75 poäng).

Skollagstävlingar

Lagolympiader på flera nivåer hålls också bland skolbarn, enligt regler som liknar reglerna för internationella studentolympiader [3] [4] .

Den mest kända lagolympiaden är den allryska lagolympiaden för skolbarn i programmering [5] (VKOSHP). Det hålls vanligtvis i början av december i olika städer i Ryssland: St Petersburg, Barnaul och städer i andra länder. Du måste kvalificera dig till den här olympiaden i din region, vanligtvis åker 10-20 lag från Moskva, lite mindre från St. Petersburg [6] .

Studenter

Olympiader i datavetenskap bland studenter från Sovjetunionen i hela landet hölls inte. Från och med 1996 började studenter från ryska universitet att delta i tävlingar som ingår i systemet för World Team Programming Championship bland studenter , som hölls av den amerikanska föreningen ACM .

Entusiaster anordnade också olika intra- och interuniversitetsolympiader. Vanligtvis sponsras dessa olympiader av ett mjukvaruutvecklingsföretag som är intresserade av att locka begåvade studenter att arbeta med dem.

Testa system och plattformar

Processen att verifiera lösningar kräver datorkraft, noggrann mätning av förbrukade resurser, stöd för ett stort antal kompilatorer, isolering av körbara program och många andra komplexa tekniska lösningar. I Ryssland har flera system och plattformar utvecklats för programmeringstävlingar:

namn stat Skrivet i Notera
kasta ut Stöds, licensierad under GPL Xi Ett system med öppen källkod som utvecklades på 2000-talet.

På grund av arkitekturens särdrag stöder den inte multi-core-testning, vilket avsevärt saktar ner testningen. Det används dock fortfarande i tävlingar.

PCMS Stöds Java Skapad 2004 vid ITMO University för att vara värd för sina egna olympiader, fortsätter den att utvecklas inom sina väggar.

På detta testsystem hålls den allryska skolbarnsolympiaden .

sortera mig Stöds Projektet startade den 1 oktober 2021.

Enligt skaparna är det världens snabbaste testsystem som kan påskynda inte bara kontroll, utan även kompilering av program. [7] Det enda projektet i Ryssland som utvecklas utan stöd från något universitet, stiftelse eller företag.

Codeforces Stöds Java Skapad 2010 vid Saratov State University .

Den mest populära sportprogrammeringsplattformen. Testlib.h-biblioteket skapat av Codeforces är de facto-standarden för uppgiftsutveckling. Projektet är lokaliserat till engelska och utvecklat med stöd av ITMO University och utländska sponsorer.

Yandex tävling Stöds Pytonorm Yandex projekt . Kan användas för egna tävlingar. Den används främst för uppräkningsolympiader och lokala träningar.
Tävlande Projektet stängt Delphi / FreePascal Skapad vid Kovrov State Technological Academy 2008. Det var en fristående server som innehöll cirka 130 uppgifter.
Timus Online-domare Underhållen men inte utvecklad okänd Ett stort onlinearkiv med problem utvecklades 2000 vid Ural Federal University .
acm.sgu.ru Projektet stängt okänd Webbplats för utbildning av studenter vid Saratov State University .
acmp.ru Stöds .NETTO Ett stort arkiv med uppgifter, utvecklat sedan 2006 med stöd av Krasnoyarsk Pioneer Palace . Den här webbplatsen är värd för skol- och kommunala etapper av den allryska olympiaden för skolbarn (endast för Krasnoyarsk-territoriet).

OS i Vitryssland

Olympiaden bland skolbarn

I Vitryssland hålls olympiaden i programmering (i informatik) bland skolbarn i flera etapper.

Den första etappen är en olympiad inom skolan. Genomförs bland studenter vid en viss utbildningsinstitution. Som ett resultat av tävlingen går vinnarna till nästa steg. Testsystem (turneringssystem) används för att genomföra sådana olympiader. Vilket system som ska användas bestäms av arrangörerna av Olympiaden. Till exempel i Brest används hjärnträningssystemet , på vissa institutioner eJudge- systemet

Den andra etappen är den kommunala olympiaden (ibland kallas den urban). En sådan olympiad hålls bland vinnarna från föregående steg, representerade av varje skola i ett visst område av staden. Till exempel hålls två regionala olympiader i Brest: för distrikten Moskva och Leninsky. Vinnarna från varje distrikt går vidare till nästa steg. Obligatoriska villkor för fortsatt deltagande i olympiaden (övergång till nästa steg) är att få mer än 50 % av de möjliga poängen (under läsåret 2014-2015 avbröts denna regel).

Den tredje etappen är den regionala olympiaden. Vinnarna av den föregående etappen (regional olympiaden) deltar här. Hela Vitryssland är indelat i 6 regioner (Brest, Vitebsk, Mogilev, Grodno, Gomel och Minsk), samt staden Minsk. Dessutom fungerar den statliga utbildningsinstitutionen "Lyceum of the Belarusian State University" som ett separat team. I var och en av dem väljs deltagare ut för nästa etapp av olympiaden.

Den fjärde etappen är den republikanska olympiaden (slutsteg). Vinnarna av regionala olympiader tävlar om titeln som den bästa programmeraren bland skolbarn.

De bästa deltagarna i den republikanska olympiaden (vanligtvis endast från 9-11 årskurser) väljs ut till träningsläger för den internationella olympiaden i informatik. Under träningslägret väljs det sista laget bland dem.

ACM International Collegiate Programming Contest

Den största internationella programmeringstävlingen för studentlag är ACM International Collegiate Programming Contest . De allmänna sponsorerna av mästerskapet är företag som Microsoft och IBM . 2004 deltog 3150 lag från 75 länder i den.

Lag från Ryssland har upprepade gånger blivit vinnare av denna prestigefyllda tävling [8] [9] [10] [11] [12] . Som ett resultat av framgångsrika prestationer hedrades lagen med ett möte med Ryska federationens president [13] [14] [15] . En av tränarna och arrangörerna av dessa olympiader i Ryssland tilldelades priserna från Ryska federationens president och Ryska federationens regering inom utbildningsområdet [16] .

Andra anmärkningsvärda tävlingar

Många tävlingar inom sportprogrammering är inte direkt relaterade till utbildningssystemet, det vill säga professionella programmerare deltar också i dem. En populär sportprogrammeringstävling i världen är TopCoder- resursen , som regelbundet är värd för rundor (SRM), vars resultat utgör betyget av deltagarna, såväl som den årliga TopCoder Open . Den ryska resursen Codeforces håller också regelbundna rundor [16] baserat på resultaten av vilka dess egen rating bildas. I slutet av 2021 blev Sort Me-plattformen populär i Ryssland och var värd för Sort Me Round [17] på månadsbasis enligt de modifierade ACM-reglerna [18] .

Stora IT-företag håller regelbundna och vanligtvis individuella programmeringstävlingar, som Google Code Jam , Facebook Hacker Cup , Russian Code Cup .

Anteckningar

  1. Olympiaden - Olympiadens historia (otillgänglig länk) . Hämtad 9 september 2011. Arkiverad från originalet 10 augusti 2011. 
  2. Tillvägagångssättet för att hålla olympiader för skolbarn . rysk tidning . Hämtad 25 januari 2022. Arkiverad från originalet 25 januari 2022.
  3. Ural regional programmeringsolympiad (otillgänglig länk) . Centrum för klassisk pedagogik UrFU B. N. Jeltsin (USU). Hämtad 9 november 2011. Arkiverad från originalet 6 oktober 2010. 
  4. Olympiader i informatik. St Petersburg, Ryssland . Hämtad 9 november 2011. Arkiverad från originalet 17 november 2011.
  5. Olympiader i informatik. St Petersburg, Ryssland . neerc.ifmo.ru. Hämtad 27 juli 2016. Arkiverad från originalet 24 augusti 2016.
  6. SN på VKOSHP - 2015  (eng.) . vkoshp2015.snarknews.info. Hämtad 27 juli 2016. Arkiverad från originalet 8 augusti 2016.
  7. Sortera mig . telegram . Hämtad 9 maj 2022. Arkiverad från originalet 9 maj 2022.
  8. SnarkNews . Hämtad 18 mars 2022. Arkiverad från originalet 14 april 2021.
  9. Världsmästare från ITMO i REN TV-nyheter :: :: Video på RuTube  (otillgänglig länk)
  10. En programmeringsakademi öppnade i St. Petersburg - Natalya Shergina - "Världsmästare fick ett kluster" - Rossiyskaya Gazeta - Öppnade i den norra huvudstaden ... . Hämtad 2 maj 2020. Arkiverad från originalet 1 december 2017.
  11. ITMO-studenter blev världsmästare i programmering . Hämtad 9 september 2011. Arkiverad från originalet 3 november 2010.
  12. Dmitry Medvedev träffade vinnarna av World Programming Championship - Channel One
  13. Idag träffade presidenten studenter - vinnare av världsmästerskapet i programmering - Channel One
  14. ↑ Den ryske presidenten Dmitrij Medvedev kommer att fortsätta traditionen med möten med ryska studenter-vinnare av världsmästerskapet i programmering bland kombinerade team av universitet. - RIA Novosti .... Hämtad 9 november 2011. Arkiverad från originalet 18 januari 2012.
  15. Tre guldmedaljer fördes till Ryska federationen av vinnarna av planetmästerskapet i programmering - Channel One . Hämtad 9 november 2011. Arkiverad från originalet 8 augusti 2013.
  16. ↑ 1 2 Stankevich Andrey Sergeevich  (otillgänglig länk)
  17. sort-me.org - Resurs - CLIST . clist.by . Hämtad 25 januari 2022. Arkiverad från originalet 25 januari 2022.
  18. Sortera mig, sortera mig. Sortera mig runda regler . Teletyp (24 oktober 2021). Hämtad 25 januari 2022. Arkiverad från originalet 25 januari 2022.

Länkar