Srednješolsko tekmovanje ACM iz računalništva in informatike

Kamen, papir, škarje — tekmovanje programov

„Kamen, papir, škarje“ (KPŠ) je igra za dva igralca. Sestavljena je iz zaporedja rund. V vsaki rundi vsak od igralcev izbere enega od treh predmetov (kamen, papir ali škarje), ne da bi vedel, kaj v tej rundi izbira drugi igralec. Če oba izbereta enak predmet, je runda neodločena. Če pa izbereta različna predmeta, je eden od njiju rundo dobil, drugi pa izgubil (kamen premaga škarje, škarje premagajo papir, papir premaga kamen).

Vsak tekmovalec napiše en podprogram za krmiljenje igralca (ta podprogram dobi pred vsako rundo tudi podatke o tem, kakšen je trenutni rezultat igre in kaj je bila zadnja nasprotnikova poteza). Na tekmovanju bomo med seboj primerjali podprogram vsakega tekmovalca s podprogrami vseh ostalih tekmovalcev. Za vsak par tekmovalcev bomo izvedli veliko število rund. Po vsaki rundi dobi zmagovalec dve točki; če se je igra končala z neodločenim izidom, pa dobi vsak igralec po eno točko. Zmagovalec bo tisti tekmovalec, čigar program bo zbral največje največje skupno število točk.

Funkcija, ki jo mora napisati tekmovalec

Vsak tekmovalec mora v izbranem programskem jeziku implementirati funkcijo poteza, ki je del razreda Igralec. Kot parametra dobi število že zbranih točk in podatke o prejšnji potezi, vrne pa črko K, P ali S, ki predstavlja željeno potezo v tem krogu. Prejšnja poteza je opisana z eno črko za tvojega igralca in eno za nasprotnikovega, če pa je to prva runda, sta obe X.

Vsaka zasnova za igralca vsebuje dve datoteki -- datoteka KPS.{cpp/java/py/...} vsebuje vse potrebno za komunikacijo z ocenjevalnim programom in je ne spreminjaj. Datoteka igralec.{cpp/java/py/...} pa vsebuje le en razred, Igralec, ki ga lahko spreminjaš. Ta razred ima tudi spremenljivko Ime, ki jo nastavi na svoje ime.

Za vsak par tekmovalcev se naredi nov objekt razreda Igralec, ki zaporedno odigra vse runde z enim od nasprotnikov.

Razvojno okolje

Za razvoj boš potreboval ocenjevalni program in zasnovo za tekmovalca. Ocenjevalni program deluje kot strežnik, na katerega se povežeta dva tekmovalca. Vse potrebno za komunikacijo je že priloženo v zasnovi za tekmovalca.

Ocenjevalni program poženeš iz ukazne vrstice (kps_eval.exe oz. kps_eval.py na Linuxu in Mac OS X-u), s parametri pa mu lahko poveš število iger in kam naj zapisuje rezultate posameznih iger.

Ko ocenjevalni program teče, poženeš še svojo rešitev; če ga zaženeš brez parametrov, pa izpiše pomoč -- vse možnosti.

Zasnova za tekmovalca je trenutno na voljo v naslednjih jezikih:

Izvorna koda za ocenjevalni program je priložena v python zasnovi.

Če bi želel pisati v jeziku, ki ga ni na zgornjem spisku, ali pa imaš v zvezi s tekmovanjem programov karšna koli vprašanja, pošlji e-mail na blaz.novak@ijs.si.

Pravila tekmovanja

Na to tekmovanje se ni treba posebej prijavljati. Tiste, ki vas sodelovanje v tem tekmovanju zanima, vabimo, da nam to sporočite po elektronski pošti (rtk-info@ijs.si). V sporočilu tudi navedite, v katerem programskem jeziku bi predvidoma napisali svoj program.

Rok za oddajo programov je 21. marec 2012. Izvorno kodo svojega programa nam pošljite po elektronski pošti na naslov rtk-info@ijs.si. Rezultati bodo objavljeni po zaključku tekmovanja iz znanja, 24. marca 2012.

Na tem tekmovanju programov lahko sodeluje kdorkoli, ne glede na starost, izobrazbo, itd. Objavili bomo rezultate vseh prejetih programov, najbolje uvrščeni dijak in najbolje uvrščeni študent pa bosta dobila tudi praktične nagrade.

Če imate v zvezi s tekmovanjem programov kakršna koli vprašanja, se obrnite na Blaža Novaka (blaz.novak@ijs.si).

Na vrh strani. | H kazalu. | Imate vprašanje ali komentar?