Tekmovalni dnevi Instituta Jožef Stefan
Srednješolsko tekmovanje ACM iz računalništva in informatike

Tarok — tekmovanje programov

Letošnja naloga za tekmovanje programov je napisati program, ki igra tarok po malo poenostavljenih in prilagojenih pravilih.

Pravila

Razlike glede na klasični tarok

Zgornja pravila se v marsikateri podrobnosti razlikujejo od klasičnih. Odpadejo na primer posebne igre (berač, klop, valat, barvni valat), rdeči platlci so preštevilčeni, ni napovedi (kralj ultimo, pagat ultimo ipd), dovoljeno je založiti taroke, točkovanje je poenostavljeno (čeprav kljub nenavadnemu izgledu skoraj povsem ekvivalentno klasičnemu), ni posebnega točkovanja trule, kraljev, mondfanga, . . . , pagat ne pobere trule itd. Vseh razlik ne bomo posebej navajali. Veljajo le pravila, eksplicitno navedena zgoraj; ne privzemajte torej pravil, ki jih morda poznate od prej.

V primeru nejasnosti nam pišite.

Funkcije, ki jih morajo implementirati igralci

Vsak tekmovalec mora v izbranem programskem jeziku implementirati spodaj naštete funkcije. Funkcije so na tem mestu deklarirane v nekakšnem metaprogramskem jeziku, ki je, upamo, razumljiv vsem; deklaracije v tvojem programskem jeziku pa bodo verjetno videti nekoliko drugače. TipIgre in Karta sta posebna podatkovna tipa; definirana bosta v testnem okolju, ki ga bo v kratkem pripravila komisija.

Pravila tekmovanja

Vsak tekmovalec napiše svojo skupino podprogramov za igranje taroka. Za ocenjevanje bomo izvedli veliko število iger, po možnosti tako, da bodo prišle na vrsto vse možne kombinacije štirih igralcev in da bo bodo vsi igralci sodelovali v enakem številu iger. Po vsaki igri bomo izračunali točke (po zgoraj opisanih pravilih) in jih pripisali igralcem zmagovalne skupine. Na koncu bomo za vsakega tekmovalca sešteli točke, ki jih je njegov igralec taroka dobil v vseh igrah; zmagovalec je tisti z največ točkami. Če bomo dobili programe le od dveh ali treh tekmovalcev, bomo razliko do štirih zapolnili enim ali dvema preprostima igralcema, ki ju bo pripravila tekmovalna komisija.

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.

Programe sprejemamo do vključno 12. marca 2010, lahko pa nam jih pošljete tudi že prej. Izvorno kodo svojega programa nam pošljite po elektronski pošti na naslov rtk-info@ijs.si. Končni rezultati bodo objavljeni po zaključku 5. tekmovanja ACM in IJS v znanju računalništva (27. marca 2010).

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.

Omejitve

Posamezni program lahko za posamezno igro porabi vsega skupaj največ 5 minut procesorjevega časa; v kateremkoli trenutku lahko uporablja največ 2 GB pomnilnika. (Igra bo potekala na računalniku z vsaj 2GHz AMDjevimi Opteroni.) Dovoljena je uporaba 64-bitnega naslavljanja in ostalih zmogljivosti teh procesorjev (npr. ukazi SIMD), če izbrani programski jezik to omogoča. Prepovedana je uporaba sistemskih klicev (npr. spreminjanje sistemskih nastavitev, časovnikov, …).

Razvojno okolje

Za razvoj boš potreboval testno okolje in zasnovo za tekmovalca. Testno okolje deluje kot strežnik, na katerega se poveže odjemalec, ki krmili tvojega tekmovalca. Poženi ga iz ukazne vrstice (tarok_eval_cli.exe), s parametri pa mu lahko poveš stevilo iger, ime datoteke, v katero naj shranjuje vmesne rezultate v CSV formatu, ipd. Program počaka, da se z njim povežejo štirje odjemalci, ki simulirajo tekmovalce, nato pa požene željeno število iger. Po vsaki igri izpiše statistike o odigrani igri; med igro pa lahko izpisuje tudi posamezne korake. Izvorno kodo testnega okolja (v pythonu) lahko pogledaš tu.

Stara različica testnega okolja je izpisovala vmesne rezultate v napačnem zaporedju. Poleg tega nova različica pravilno vodi točkovanje v primeru, ko igralec izbere solo igro, vendar istočasno izbere tudi veljavno barvo.

Zasnova za tekmovalca je trenutno na voljo v naslednjih jezikih:

Če bi želel pisati v jeziku, ki ga ni na zgornjem spisku, pošlji e-mail na blaz.novak@ijs.si.

Tu bodo objavljeni tudi morebitni popravki testnega okolja in zasnov za tekmovalce.

Vsaka zasnova že vsebuje:

Za testiranje najprej zaženeš testno okolje, potem pa še štiri igralce.

 

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

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