Programmering Olympiade ( Informatik Olympiade ) er en intellektuel konkurrence til løsning af forskellige problemer på en computer , for hvis løsning det er nødvendigt at opfinde og anvende enhver algoritme eller program på et af programmeringssprogene . Som regel får deltagerne et sæt af flere opgaver. Problemet anses for løst, hvis deltagerne var i stand til at lave et program, der fungerer korrekt på de prøver, som juryen har udarbejdet. Testene er ukendte for deltagerne.
Olympiader er individuelle og hold. Hold-olympiader involverer normalt 3 personer, og de er forsynet med 1 computer i hele Olympiadens varighed for at løse problemer. Specialiserede softwareturneringssystemer bruges til at gennemføre sådanne konkurrencer.
Sportsprogrammeringsproblemer er unikke ved, at svaret på dem er et program, der optimalt løser problemet på én gang for alle mulige inputdata.
For eksempel, hvis det enkleste matematiske problem lyder som "Tilføj to tal: 4 og 5 " , så vil det enkleste programmeringsproblem lyde som "Skriv et program, der tilføjer to vilkårlige tal." I dette tilfælde vil deltageren blive bedt om at skrive et program, der læser to tal gennem standardinputstrømmen og udsender ét tal - svaret på problemet - til standardoutputstrømmen . Nogle gange tilbyder konkurrencearrangører at læse og udlæse data på en anden måde, for eksempel gennem . A+B er en klassisk udfordring for at lære dette format at kende.
Selvfølgelig skal konkurrencens jury på en eller anden måde sikre sig, at deltagerens program fungerer korrekt for enhver data. For at gøre dette udarbejdes der inden konkurrencen et sæt test , hvorpå deltagernes løsninger vil blive lanceret, og et sæt svar på dem. Hvis juryen og deltageren har de samme svar på alle prøver, vil afgørelsen modtage en fuld score, hvis ikke, en delvis eller nul. Ved de fleste olympiader er kontrollen automatiseret og udføres umiddelbart efter, at deltageren har indsendt løsningen, hvilket giver ham mulighed for hurtigt at informere ham om resultatet og give ham en chance for at forfine programmet.
Ofte kontrolleres løsningen ikke kun for korrekthed, men også for effektivitet. For at gøre dette indfører testsystemet en grænse for mængden af processortid, som det indlæste program kan bruge, og inputdataene i nogle tests er valgt, så den ineffektive løsning kører for længe. Som følge heraf fejler en sådan løsning disse tests og får en ufuldstændig score.
Forfatterne forsøger at vælge inputdata på en sådan måde, at køretiden for en ineffektiv løsning overskrider den fastsatte grænse med mange gange, hvilket eliminerer indflydelsen af forskelle i processorkarakteristika, målefejl, Turbo Boost og andre faktorer på resultatet. Samtidig måles processortiden og ikke den reelle eksekveringstid, så testserverens processorbelastning med andre opgaver bør heller ikke påvirke resultatet.
I en verden af sportsprogrammering er der et bestemt format for problemforhold. Selvom det ikke er officielt standardiseret af nogen, opdeler de facto konkurrencer rundt om i verden betingelserne for problemerne i følgende underafsnit:
Den første olympiade i programmering blandt skolebørn i Moskva blev afholdt i 1981 (der var kun 4 deltagere), og den første olympiade i USSR (under navnet Olympiade i informatik) blev afholdt blandt skolebørn og fandt sted i 1988 i Sverdlovsk [1] . I fremtiden blev Olympiads in Informatics en del af All-Unionen (og efter Sovjetunionens sammenbrud - All-Russian) fagolympiader for skolebørn.
Traditionelt er olympiader for skolebørn individuelle konkurrencer, der afholdes i henhold til et system på flere niveauer, i flere faser: distrikt, by, regionale, nationale olympiader. Vindere af den helrussiske olympiade får ret til at deltage i internationale olympiader i informatik .
Listede olympiaderHvert år udarbejder det russiske råd for olympiader for skoleelever (RSOS) en særlig liste over olympiader, som kan omfatte personlige olympiader i sportsprogrammering. Sådanne konkurrencer afholdes altid i to faser: kvalifikation (online) og finale (personligt, men undtagelser var tilladt på grund af COVID-19-pandemien ). Kun myndigheder inden for uddannelses- og videregående uddannelsesinstitutioner har ret til at gennemføre listeolympiader. [2]
Høje resultater vist ved sådanne olympiader kan give nogle privilegier, når de går ind på et universitet , herunder optagelse uden adgangsprøver eller afrunding af USE-resultaterne i datalogi til 100 point (hvis den studerende opnåede mindst 75 point).
SkoleholdskonkurrencerHold-olympiader på flere niveauer afholdes også blandt skolebørn, efter reglerne svarende til reglerne for internationale elev-olympiader [3] [4] .
Den mest berømte hold-olympiade er den all-russiske hold-olympiade for skolebørn i programmering [5] (VKOSHP). Det afholdes normalt i begyndelsen af december i forskellige byer i Rusland: St. Petersborg, Barnaul og byer i andre lande. Du skal kvalificere dig til denne olympiade i din region, normalt tager 10-20 hold fra Moskva, lidt færre fra St. Petersborg [6] .
Olympiader i datalogi blandt studerende i USSR i hele landet blev ikke afholdt. Fra 1996 begyndte studerende fra russiske universiteter at deltage i konkurrencer inkluderet i systemet for World Team Programming Championship blandt studerende , afholdt af den amerikanske sammenslutning ACM .
Entusiaster organiserede også forskellige intra- og interuniversitets-olympiader. Normalt er disse olympiader sponsoreret af et softwareudviklingsfirma, der er interesseret i at tiltrække talentfulde studerende til at arbejde med dem.
Processen med at verificere løsninger kræver computerkraft, nøjagtig måling af forbrugte ressourcer, support til et stort antal compilere, isolering af eksekverbare programmer og mange andre komplekse tekniske løsninger. I Rusland er der udviklet flere systemer og platforme til programmeringskonkurrencer:
Navn | Stat | Skrevet i | Bemærk |
---|---|---|---|
udstøde | Understøttet, licenseret under GPL | Xi | Et open source-system udviklet i 2000'erne.
På grund af arkitekturens ejendommeligheder understøtter den ikke multi-core test, hvilket i høj grad bremser testning. Det bruges dog stadig i konkurrence. |
PCMS | Understøttet | Java | Oprettet i 2004 på ITMO University for at være vært for sine egne olympiader, fortsætter den med at udvikle sig inden for sine mure.
På dette testsystem afholdes den all-russiske skolebørnsolympiade . |
sortere mig | Understøttet | gå | Projektet blev lanceret den 1. oktober 2021.
Ifølge skaberne er det verdens hurtigste testsystem, der kan fremskynde ikke kun kontrol, men også kompilering af programmer. [7] Det eneste projekt i Rusland, der udvikler sig uden støtte fra noget universitet, fond eller virksomhed. |
Kodekræfter | Understøttet | Java | Oprettet i 2010 ved Saratov State University .
Den mest populære sportsprogrammeringsplatform. Testlib.h-biblioteket skabt af Codeforces er de facto-standarden for opgaveudvikling. Projektet er lokaliseret til engelsk og udviklet med støtte fra ITMO University og udenlandske sponsorer. |
Yandex konkurrence | Understøttet | Python | Yandex projekt . Kan bruges til dine egne konkurrencer. Det bruges hovedsageligt til optællingsolympiader og lokale træninger. |
Konkurrent | Projekt lukket | Delphi / FreePascal | Oprettet på Kovrov State Technological Academy i 2008. Det var en selvstændig server, der indeholdt omkring 130 opgaver. |
Timus online dommer | Vedligeholdt men ikke udviklet | ukendt | Et stort online arkiv med problemer udviklet i 2000 på Ural Federal University . |
acm.sgu.ru | Projekt lukket | ukendt | Websted for uddannelse af studerende fra Saratov State University . |
acmp.ru | Understøttet | .NET | Et stort arkiv af opgaver, udviklet siden 2006 med støtte fra Krasnoyarsk Pioneer Palace . Dette websted er vært for skole- og kommunale etaper af den all-russiske olympiade for skolebørn (kun for Krasnoyarsk-territoriet). |
I Hviderusland afholdes olympiade i programmering (i informatik) blandt skolebørn i flere faser.
Den første etape er en intern skoleolympiade. Udført blandt studerende fra en bestemt uddannelsesinstitution. Som et resultat af konkurrencen går vinderne til næste etape. Testsystemer (turneringssystemer) bruges til at gennemføre sådanne olympiader. Hvilket system der skal bruges, bestemmes af arrangørerne af Olympiaden. I Brest bruges for eksempel Brain Training -systemet , i nogle institutioner eJudge -systemet
Den anden etape er den kommunale olympiade (nogle gange kaldes den urban). En sådan olympiade afholdes blandt vinderne af den foregående fase, repræsenteret af hver skole i et bestemt område af byen. For eksempel afholdes to regionale olympiader i Brest: for Moskva- og Leninsky-distrikterne. Vinderne fra hvert distrikt går videre til næste fase. Obligatoriske betingelser for fortsat deltagelse i olympiaden (overgang til næste fase) er at score mere end 50% af de mulige point (i det akademiske år 2014-2015 blev denne regel annulleret).
Tredje etape er den regionale olympiade. Vinderne af den forrige etape (regional olympiade) deltager her. Hele Hviderusland er opdelt i 6 regioner (Brest, Vitebsk, Mogilev, Grodno, Gomel og Minsk), samt byen Minsk. Derudover fungerer den statslige uddannelsesinstitution "Lyceum of the Belarusian State University" som et separat team. I hver af dem udvælges deltagere til næste etape af olympiaden.
Den fjerde etape er den republikanske olympiade (sidste etape). Vinderne af regionale olympiader konkurrerer om titlen som den bedste programmør blandt skolebørn.
De bedste deltagere i den republikanske olympiade (normalt kun fra 9-11 klassetrin) udvælges til træningslejre til den internationale olympiade i informatik. Under træningslejren udvælges det endelige hold blandt dem.
Den største internationale programmeringskonkurrence for studerende er ACM International Collegiate Programming Contest . De generelle sponsorer af mesterskabet er virksomheder som Microsoft og IBM . I 2004 deltog 3150 hold fra 75 lande i det.
Hold fra Rusland er gentagne gange blevet vindere af denne prestigefyldte konkurrence [8] [9] [10] [11] [12] . Som et resultat af succesrige præstationer blev holdene hædret med et møde med præsidenten for Den Russiske Føderation [13] [14] [15] . En af trænerne og arrangørerne af disse olympiader i Rusland blev tildelt priserne fra præsidenten for Den Russiske Føderation og Den Russiske Føderations regering på uddannelsesområdet [16] .
Mange konkurrencer inden for sportsprogrammering er ikke direkte relateret til uddannelsessystemet, det vil sige, at professionelle programmører også deltager i dem. En populær sportsprogrammeringskonkurrence i verden er TopCoder- ressourcen , som regelmæssigt afholder runder (SRM), hvis resultater danner bedømmelsen af deltagere, såvel som den årlige TopCoder Open . Den russiske ressource Codeforces afholder også regelmæssige runder [16] baseret på resultaterne, som dens egen rating er dannet af. I slutningen af 2021 vandt Sort Me-platformen popularitet i Rusland , hvor Sort Me Round [17] var vært på månedlig basis i henhold til de ændrede ACM-regler [18] .
Store it-virksomheder afholder regelmæssige og sædvanligvis individuelle programmeringskonkurrencer, såsom Google Code Jam , Facebook Hacker Cup , Russian Code Cup .
Programmeringskonkurrencer | |
---|---|
Konkurrence | |
Organisationer |