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.
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.
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:
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 olympiaderVarje å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ävlingarLagolympiader 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] .
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.
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 | gå | 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). |
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.
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] .
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 .
Programmeringstävlingar | |
---|---|
Konkurrens | |
Organisationer |