Danes V portugalskem mestu Porto bo finale mednarodnega programerskega tekmovanja ICPC 2019. Udeležili se ga bodo predstavniki Univerze ITMO in druge ekipe univerz iz Rusije, Kitajske, Indije, ZDA in drugih držav. Povejmo vam podrobneje.
icpcnews /flickr/ CC BY / Fotografije s finala ICPC-2016 v Phuketu
Kaj je ICPC
ICPC je mednarodno tekmovanje študentov v programiranju. Potekajo že dobrih 40 let – prvi finale mimo davnega leta 1977. Izbor poteka v več fazah. Univerze so razdeljene po regijah (Evropa, Azija, Afrika, Amerika itd.). Vsak od njih gosti vmesne faze, zlasti polfinale Severne Evrazije potekalo na naši univerzi. Zmagovalci regijskih stopenj se udeležijo finala.
Na ICPC so ekipe treh udeležencev pozvane, da rešijo številne probleme z uporabo enega računalnika (brez povezave z internetom). Tako se poleg veščin programiranja preverjajo tudi veščine timskega dela.
Med tekmovanjem ekipe bo prejel en računalnik za tri osebe. Poganja Ubuntu 18.04 in ima prednameščene vi/vim, gvim, emacs, gedit, geany in kate. Programe lahko pišete v Pythonu, Kotlinu, Javi ali C++.
Ko ekipa reši problem, ga posreduje testnemu strežniku, ki ovrednoti kodo. Udeleženci ne vedo, katere teste stroj izvaja. Če so vsi uspešni, ekipa prejme dodatne točke. V nasprotnem primeru se ustvari napaka in učenci so poslani, da popravijo kodo.
Po pravilih ICPC zmaga ekipa, ki reši največ problemov. Če je takih ekip več, zmagovalca določi najmanjši kazenski čas. Za vsako rešeno nalogo udeleženci prejmejo kazenske minute. Število minut je enako času od začetka tekmovanja do sprejema naloge s strani testnega strežnika. Če ekipa najde rešitev, prejme še dvajset minut kazni za vsak nepravilen poskus, da jo preide.
icpcnews /flickr/ CC BY / Fotografije s finala ICPC-2016 v Phuketu
Primeri nalog
Cilji prvenstva zahtevajo ekipno usklajenost in koncentracijo. Dodatno preverjajo znanje posameznih matematičnih algoritmov. Tukaj je primer naloge, ki je bila ponujena udeležencem ICPC 2018:
V tipografiji obstaja izraz "reka" - to je zaporedje presledkov med besedami, ki je sestavljeno iz več vrstic besedila. Neki strokovnjak za reke (zares) želi izdati knjigo. Želi, da se pri tiskanju v enoprostorski pisavi na strani »tvorijo« najdaljši tipografski reki. Udeleženci so morali določiti širino polj, pri kateri bo ta pogoj izpolnjen.
Na vhodu je program prejel celo število n (2 ≤ n ≤ 2), ki določa število besed v besedilu. Nato je sledil vnos besedila: besede v eni vrstici so bile ločene z enim presledkom in niso smele vsebovati več kot 500 znakov.
Na izhodu je moral program prikazati širino polj, na katerih nastane najdaljša »reka«, in dolžino te reke.