Mednarodno tekmovanje v programiranju za študente

 

Kdo bi si mislil! Še se najdejo študenti, vešči programiranja, ki ne pišejo ves čas programov za tisoč in eno računalniško podjetje, ki vsako prodaja daleč najboljši računovodski program pri nas, ampak so to svoje znanje pripravljeni pokazati tudi v obliki tekmovanja.

Tako so pred dvema letoma trije študentje Fakultete za matematiko in fiziko, vsi bivši uspešni tekmovalci na srednješolskih tekmovanjih iz računalništva, dali pobudo, da bi se tudi študenti Univerze v Ljubljani udeležili tekmovanja z imenom ACM International Collegiate Programming Contest. Zakaj sploh gre?

ACM

Association for Computing Machinery (http://www.acm.org) je mednarodno znanstveno in izobraževalno združenje, katerega cilj je razvijanje uporabe informacijske tehnologije. Danes ima preko 80000 članov po celem svetu in je verjetno eno najbolj znanih združenj računalničarjev. Pred kratkim je praznovalo svojo 50letnico delovanja. Zelo ima razvito publicistično dejavnost, saj izdaja cel kup revij, ki objavlja strokovne članke s področja računalništva, v sodelovanju z drugimi založbami pa tudi izdaja tudi knjige. Kot tudi druga združenja podeljuje vrsto nagrad in priznanj. Med njimi je verjetno najbolj znana in prestižna Turingova nagrada, ki jo lahko na področju računalništva enačimo z Nobelovo nagrado. Večina tistih, katerih računalniško znanje sega malo širše kot le do Bill Gatesa in Stevena Jobsa, je že slišala za Dijkstro, Knutha, Minskega, Thompsona, Ritchieja, Wirtha, Codda, Hopcrofta in druge. Vsi ti so med dobitniki Turingovih nagrad.

ACM posveča precej pozornosti tudi vključevanju študentov v svoje vrste. Obstaja vrsta aktivnosti, namenjenih posebej njim. Ena najpomembnejših je vsekakor ACM International Collegiate Programming Contests (http://acm.baylor.edu/acmicpc/). To je tekmovanje tročlanskih ekip študentov v programiranju. ACM prireja to tekmovanje že 26 let.

ACM International Collegiate Programming Contest

 

Organizacija ACM je že v sedemdesetih letih organizirala tekmovanje v programiranju, namenjeno študentom ameriških univerz. Ideja tekmovanja se je z širitvijo združenja širila po celem svetu. O odmevnosti tega tekmovanja priča dejstvo, da se ga v letošnjem krogu udeležuje preko 1500 univerzitetnih ekip s celega sveta. Te se najprej pomerijo na področnih tekmovanjih, ki jih je okoli 30. Najboljša ekipa (ali najboljši dve) s teh tekmovanj se uvrsti na zaključno tekmovanje. O tem, da je tekmovanje res postalo mednarodno, priča prvih 10 ekip lanskoletnega tekmovanja. Zmagala je ekipa iz Karlove univerze v Pragi, drugi so bili Rusi iz Petersburga in tretja kanadska univerza iz Waterlooja. Do desetega mesta so se zvrstile še ekipe iz Švedske, ZDA, Avstralije, Kitajske, Kanade, Poljske in Romunije.

 

Posebno draž tekmovanju daje način tekmovanja. Vsaka ekipa ima na voljo en računalnik in pet ur časa, da reši dane naloge. Teh je praviloma osem, lahko pa je tudi kakšna manj ali več. Ko ekipa meni, da je nalogo rešila, odda programsko kodo. To sodniki spustijo čez skupino tekmovalcem neznanih testnih podatkov. Če program v določenem času da odgovor, ki se povsem ujema s predpisanim, je naloga sprejeta. V nasprotem primeru pa tekmovalci dobijo sporočilo, da naloga ni v redu in lahko poskušajo znova. Vrstni red, v katerem ekipe oddajajo naloge, ni predpisan. Zmaga tista ekipa, ki reši največ nalog. Če več ekip reši isto število nalog, je bolje uvrščena tista, ki jih reši prej. In kako se meri čas? Ko ekipa odda pravilno rešitev, se k njenemu času prišteje čas od začetka tekmovanja, do trenutka oddaje te rešitve. Rešitvi se prišteje 20 minut za vsak neuspešen poskus oddaje rešitve te naloge. Tekmovalci, kot tudi gledalci, sproti vedo, kako uspešni so nasprotniki - torej katere naloge so že rešili. Letošnje področno tekmovanje v Pragi je bilo prenašano kar po Internetu.

Pokaže se, da za večino nalog tekmovalci sicer imajo idejo, kako jo rešiti. Vendar je potrebno idejo pravilno pretočiti v delujoč program, časa pa je sorazmerno malo. Tako ne preseneča, da je za solidno uvrstitev dovolj, če ti sprejmejo tri ali celo le dva programa.

Univerza v Ljubljani na tekmovanju

Evropa je trenutno razdeljena v 5 regij. Slovenija je bila sprva uvrščena v jugovzhodno evropsko skupino, ki ima tekmovanja v Romuniji. Ker pa je pot na Slovaško oz. Češko, kjer so tekmovanja Srednjeevropske skupine, enostavnejša, so študenti obeh slovenskih univerz s pristankom organizatorjev tekmovali v tej skupini. V letošnjem letu smo dosegli, da bo Slovenija tudi uradno pripadala v Srednjeevropsko regijo.

Prvo leto je šla ekipa ljubljanske Univerze predvsem nabirati izkušnje. Na tekmovanju, ki je bilo v Bratislavi, se je uvrstila na 22. mesto med 45 sodelujočimi ekipami, med katerimi se jih večina posebej pripravlja za tekmovanje. Zato smo za letošnje tekmovanje na Fakulteti za matematiko in fiziko pripravili priprave in izbirna tekmovanja za določitev ekipe. Vodja priprav in domačega tekmovanja je bil mag. Matija Lokar s Fakultete za matematiko in fiziko. Na osnovi predtekmovanj sta se na srednjeevropsko tekmovanje uvrstili dve ekipi. Prvo so sestavljali Janez Brank, Miha Peternel, Mitja Šlenc (rezerva Gregor Rebolj), drugo pa Gorazd Breskvar, Miha Vuk, Klemen Žagar (rezerva Andraž Bežek) .

Tekmovanje je bilo 14. novembra 1998 na najstarejši tehnični univerzi v Evropi, Češki tehnični univerzi, v Pragi. Prva ekipa je med 44 ekipami iz osmih držav zasedla deveto mesto, druga pa deseto. Za šele drugo udeležbo je to vsekakor odličen rezultat, saj šteje ta skupina za eno najkvalitetnejših na celotnem tekmovanju. Podrobnejše rezultate si lahko ogledate na uradni strani področnega tekmovanja http://contest.felk.cvut.cz/. Udeležbo na tekmovanju so omogočili glavni pokrovitelj, podjetje Effnet s Švedske, ter domači podjetji Hermes Softlab in Zelinka&sinovi.

Več o tekmovanju si lahko preberete na spletni strani http://www.educa.fmf.uni-lj.si/acm/. Za izziv pa sta tu še dve nalogi z letošnjega področnega tekmovanja v Pragi. Prva je lahka, saj so jo rešile vse ekipe, razen ene, druga pa je bistveno težji oreh (a še vedno ne najtežja). Kljub enostavnosti prve naloge vas bo morda presenetil podatek, da je prva pravilna rešitev bila tu že po petih minutah. Sam v tem času nalogo komaj preberem, kaj šele, da bi napisal povsem pravilen program.

 

 

Matija Lokar