Ohjelmointiolympiadi ( Informatics Olympiad ) on älyllinen kilpailu erilaisten ongelmien ratkaisemiseksi tietokoneella , jonka ratkaisemiseksi on keksittävä ja käytettävä mikä tahansa algoritmi tai ohjelma jollakin ohjelmointikielellä . Yleensä osallistujille annetaan joukko useita tehtäviä. Ongelma katsotaan ratkaistuksi, jos osallistujat pystyivät luomaan ohjelman, joka toimii oikein tuomariston laatimissa testeissä. Testit ovat osallistujille tuntemattomia.
Olympialaiset ovat yksilö- ja joukkuekisat. Ryhmäolympialaisiin osallistuu yleensä 3 henkilöä ja heillä on 1 tietokone koko olympialaisten ajaksi ongelmien ratkaisemiseksi. Tällaisten kilpailujen järjestämiseen käytetään erikoistuneita ohjelmistoturnausjärjestelmiä.
Urheiluohjelmointiongelmat ovat ainutlaatuisia siinä mielessä, että vastaus niihin on ohjelma, joka ratkaisee ongelman optimaalisesti kerralla kaikelle mahdolliselle syöttödatalle.
Jos esimerkiksi yksinkertaisin matemaattinen tehtävä kuulostaa "Lisää kaksi numeroa: 4 ja 5 " , yksinkertaisin ohjelmointitehtävä kuulostaa "Kirjoita ohjelma, joka lisää mitkä tahansa kaksi numeroa." Tässä tapauksessa osallistujan on kirjoitettava ohjelma, joka lukee kaksi numeroa vakiosyöttövirran kautta ja tulostaa yhden numeron - vastauksen ongelmaan - vakiotulostevirtaan . Joskus kilpailun järjestäjät tarjoavat tietojen lukemista ja tulostamista toisella tavalla , esimerkiksi . A+B on klassinen haaste tähän formaattiin tutustumiseen.
Tietysti kilpailun tuomariston on jotenkin varmistettava, että osallistujan ohjelma toimii oikein kaikelle datalle. Tätä varten ennen kilpailua valmistetaan sarja testejä , joissa käynnistetään osallistujien ratkaisut ja joukko vastauksia niihin. Jos tuomariston ja osallistujan vastaukset kaikkiin kokeisiin ovat samat, päätöksestä saa täyden pistemäärän, jos ei, osittaisen tai nollan. Useimmissa olympialaisissa tarkistus on automatisoitu ja se suoritetaan välittömästi sen jälkeen, kun osallistuja on lähettänyt ratkaisun, jolloin hän voi nopeasti ilmoittaa tuloksesta ja antaa hänelle mahdollisuuden tarkentaa ohjelmaa.
Usein ratkaisua tarkistetaan paitsi oikeellisuuden, myös tehokkuuden suhteen. Tätä varten testausjärjestelmä asettaa rajoituksen ladatun ohjelman käyttämälle prosessoriajalle ja joissakin testeissä syöttötiedot valitaan siten, että tehoton ratkaisu kestää liian kauan. Tämän seurauksena tällainen ratkaisu epäonnistuu näissä testeissä ja saa epätäydellisen pistemäärän.
Kirjoittajat yrittävät valita syöttötiedot siten, että tehottoman ratkaisun ajoaika ylittää asetetun rajan moninkertaisesti, mikä eliminoi prosessorin ominaisuuksien erojen, mittausvirheiden, Turbo Boostin ja muiden tekijöiden vaikutuksen tulokseen. Samalla mitataan prosessoriaikaa , ei todellista suoritusaikaa, joten testauspalvelimen prosessorikuormitus muiden tehtävien kanssa ei myöskään saisi vaikuttaa tulokseen.
Urheiluohjelmoinnin maailmassa ongelmatilanteisiin on olemassa tietty muoto. Vaikka kukaan ei ole virallisesti standardoinut sitä, de facto kilpailut ympäri maailmaa jakavat ongelmien ehdot seuraaviin kohtiin:
Ensimmäinen ohjelmointiolympialainen koululaisten keskuudessa Moskovassa pidettiin vuonna 1981 (osallistujia oli vain 4), ja Neuvostoliiton ensimmäinen olympialaiset (nimellä Olympiad in Informatics) pidettiin koululaisten keskuudessa ja pidettiin vuonna 1988 Sverdlovskissa [1] . Tulevaisuudessa tietotekniikan olympialaisista tuli osa koko unionin (ja Neuvostoliiton romahtamisen jälkeen - koko Venäjän) oppiaineolympialaisia koululaisille.
Perinteisesti koululaisten olympialaiset ovat yksittäisiä kilpailuja, jotka järjestetään monitasoisen järjestelmän mukaisesti useissa vaiheissa: piirin, kaupungin, alueelliset, kansalliset olympialaiset. Koko Venäjän olympialaisten voittajat saavat oikeuden osallistua kansainvälisiin tietotekniikan olympialaisiin .
Listatut olympialaisetVenäjän koululaisten olympialaisten neuvosto (RSOS) laatii joka vuosi erityisen olympialaisten luettelon, joka voi sisältää henkilökohtaisia urheiluohjelmoinnin olympialaisia. Tällaiset kilpailut järjestetään aina kahdessa vaiheessa: karsinnat (online) ja finaali (henkilökohtaisesti, mutta poikkeukset sallittiin COVID-19-pandemian vuoksi ). Vain koulutusalan viranomaisilla ja korkeakouluilla on oikeus järjestää listaolympialaisia. [2]
Tällaisissa olympialaisissa näkyvät korkeat tulokset voivat antaa etuoikeuksia yliopistoon pääsyssä, mukaan lukien pääsy ilman pääsykokeita tai tietojenkäsittelytieteen USE-tulosten pyöristäminen 100 pisteeseen (jos opiskelija sai vähintään 75 pistettä).
Koulujen joukkuekilpailutMonitasoisia joukkueolympialaisia järjestetään myös koululaisten keskuudessa kansainvälisten opiskelijaolympialaisten sääntöjä vastaavien sääntöjen mukaisesti [3] [4] .
Tunnetuin joukkueolympialainen on All-Russian Team Olympiad for Schoollasten in Programming [5] (VKOSHP). Se järjestetään yleensä joulukuun alussa Venäjän eri kaupungeissa: Pietarissa, Barnaulissa ja muiden maiden kaupungeissa. Sinun on päästävä tähän alueesi olympialaisiin, yleensä 10-20 joukkuetta lähtee Moskovasta, hieman vähemmän Pietarista [6] .
Tietojenkäsittelytieteen olympialaisia Neuvostoliiton opiskelijoiden keskuudessa koko maassa ei pidetty. Vuodesta 1996 lähtien venäläisten yliopistojen opiskelijat alkoivat osallistua amerikkalaisen ACM -yhdistyksen järjestämiin opiskelijoiden World Team Programming Championship -järjestelmään kuuluviin kilpailuihin .
Harrastajat järjestivät myös erilaisia yliopistojen sisäisiä ja välisiä olympialaisia. Yleensä näitä olympialaisia sponsoroi ohjelmistokehitysyritys, joka on kiinnostunut houkuttelemaan lahjakkaita opiskelijoita työskentelemään heidän kanssaan.
Ratkaisujen varmistusprosessi vaatii laskentatehoa, kulutettujen resurssien tarkkaa mittausta, tukea suurelle määrälle kääntäjiä, suoritettavien ohjelmien eristämistä ja monia muita monimutkaisia teknisiä ratkaisuja. Venäjällä ohjelmointikilpailuja varten on kehitetty useita järjestelmiä ja alustoja:
Nimi | Osavaltio | Sisään kirjoitettu | Merkintä |
---|---|---|---|
tuomari | Tuettu, GPL -lisenssi | Xi | 2000-luvulla kehitetty avoimen lähdekoodin järjestelmä.
Arkkitehtuurin erityispiirteistä johtuen se ei tue moniytimistä testausta, mikä hidastaa testausta huomattavasti. Sitä käytetään kuitenkin edelleen kilpailussa. |
PCMS | Tuettu | Java | Se perustettiin vuonna 2004 ITMO-yliopistossa isännöimään omia olympialaisiaan, ja se kehittyy edelleen seinien sisällä.
Tällä testausjärjestelmällä järjestetään koululaisten koko venäläinen olympialainen . |
lajittele minut | Tuettu | mennä | Hanke käynnistettiin 1.10.2021.
Tekijöiden mukaan se on maailman nopein testausjärjestelmä, joka voi nopeuttaa ohjelmien tarkistamisen lisäksi myös kääntämistä. [7] Ainoa hanke Venäjällä, joka kehittyy ilman minkään yliopiston, säätiön tai yrityksen tukea. |
Koodivoimat | Tuettu | Java | Perustettu vuonna 2010 Saratovin osavaltion yliopistossa .
Suosituin urheiluohjelmointialusta. Codeforcesin luoma testlib.h-kirjasto on tehtävien kehittämisen tosiasiallinen standardi. Projekti on lokalisoitu englanniksi ja kehitetty ITMO-yliopiston ja ulkomaisten sponsorien tuella. |
Yandex-kilpailu | Tuettu | Python | Yandex projekti . Voidaan käyttää omiin kilpailuihin. Sitä käytetään pääasiassa laskennallisiin olympialaisiin ja paikallisiin harjoituksiin. |
Kilpailija | Projekti suljettu | Delphi / FreePascal | Perustettu Kovrovin valtion teknologisessa akatemiassa vuonna 2008. Se oli erillinen palvelin, joka sisälsi noin 130 tehtävää. |
Timus Online Tuomari | Ylläpidetty, mutta ei kehitetty | tuntematon | Suuri online-arkisto ongelmista kehitettiin vuonna 2000 Uralin liittovaltion yliopistossa . |
acm.sgu.ru | Projekti suljettu | tuntematon | Sivusto Saratovin osavaltion yliopiston opiskelijoiden koulutusta varten . |
acmp.ru | Tuettu | .NETTO | Laaja tehtävien arkisto, joka on kehitetty vuodesta 2006 Krasnojarskin pioneeripalatsin tuella . Tämä sivusto isännöi koulujen ja kuntien vaiheita koko Venäjän koululaisten olympialaisten (vain Krasnojarskin alueella). |
Valko-Venäjällä koululaisten ohjelmoinnin (informatiikan) olympialaiset järjestetään useissa vaiheissa.
Ensimmäinen vaihe on koulun sisäinen olympialainen. Suoritetaan tietyn oppilaitoksen opiskelijoiden keskuudessa. Kilpailun tuloksena voittajat pääsevät seuraavaan vaiheeseen. Testausjärjestelmiä (turnausjärjestelmiä) käytetään tällaisten olympialaisten järjestämiseen. Olympian järjestäjät päättävät, mitä järjestelmää käytetään. Esimerkiksi Brestissä käytetään Brain Training -järjestelmää , joissakin laitoksissa eJudge- järjestelmää
Toinen vaihe on kunnallinen olympialainen (joskus sitä kutsutaan kaupunkiolympiaksi). Tällainen olympialainen järjestetään edellisen vaiheen voittajien keskuudessa, joita edustaa jokainen koulu tietyllä kaupungin alueella. Esimerkiksi Brestissä järjestetään kaksi alueellista olympialaista: Moskovan ja Leninskin alueille. Jokaisen piirin voittajat etenevät seuraavaan vaiheeseen. Pakolliset edellytykset olympialaisten osallistumisen jatkamiselle (siirtyminen seuraavaan vaiheeseen) ovat yli 50 % mahdollisista pisteistä (lukuvuonna 2014-2015 tämä sääntö kumottiin).
Kolmas vaihe on alueolympialaiset. Edellisen vaiheen (alueolympian) voittajat osallistuvat täällä. Koko Valko-Venäjä on jaettu 6 alueeseen (Brest, Vitebsk, Mogilev, Grodno, Gomel ja Minsk) sekä Minskin kaupunkiin. Lisäksi valtion koulutuslaitos "Valko-Venäjän valtionyliopiston lyseum" toimii erillisenä tiiminä. Jokaisessa niistä valitaan osallistujat olympiadin seuraavaan vaiheeseen.
Neljäs vaihe on tasavallan olympialaiset (viimeinen vaihe). Alueolympialaisten voittajat kilpailevat parhaan ohjelmoijan tittelistä koululaisten joukossa.
Tasavallan olympiadin parhaat osallistujat (yleensä vain 9-11-luokilta) valitaan kansainvälisen tietotekniikan olympialaisen harjoitusleireille. Harjoitusleirin aikana heistä valitaan lopullinen joukkue.
Suurin kansainvälinen opiskelijajoukkueohjelmointikilpailu on ACM International Collegiate Programming Contest . Mestaruuden pääsponsoreina ovat muun muassa Microsoft ja IBM . Vuonna 2004 siihen osallistui 3150 joukkuetta 75 maasta.
Venäjän joukkueet ovat toistuvasti voittaneet tämän arvostetun kilpailun [8] [9] [10] [11] [12] . Onnistuneiden suoritusten seurauksena joukkueita kunnioitettiin tapaamisella Venäjän federaation presidentin kanssa [13] [14] [15] . Yksi näiden Venäjän olympialaisten kouluttajista ja järjestäjistä palkittiin Venäjän federaation presidentin ja Venäjän federaation hallituksen koulutusalan palkinnoilla [16] .
Monet urheiluohjelmoinnin kilpailut eivät liity suoraan koulutusjärjestelmään, eli niihin osallistuu myös ammattiohjelmoijia. Suosittu urheiluohjelmointikilpailu maailmassa on TopCoder -resurssi , jossa järjestetään säännöllisesti kierroksia (SRM), joiden tulokset muodostavat osallistujien arvosanan, sekä vuosittainen TopCoder Open . venäläinen resurssi Codeforces pitää myös säännöllisiä kierroksia [16] joiden tulosten perusteella muodostetaan oma luokitus. Vuoden 2021 lopussa Sort Me -alusta saavutti suosion Venäjällä , ja se isännöi Sort Me Roundia [17] kuukausittain muokattujen ACM-sääntöjen [18] mukaisesti .
Suuret IT-yritykset järjestävät säännöllisesti ja yleensä yksittäisiä ohjelmointikilpailuja, kuten Google Code Jam , Facebook Hacker Cup , Russian Code Cup .
Ohjelmointikilpailut | |
---|---|
Kilpailu | |
Organisaatiot |