Erinevus lehekülje "ITI0011:Gomoku turniir" redaktsioonide vahel

Allikas: Kursused
Mine navigeerimisribale Mine otsikasti
36. rida: 36. rida:
 
* lähtefaili maksimaalne suurus on 1MB (ehk siis väga suurt andmebaasi lähtekoodi lisada ei saa, samas 1MB annab mingil määral vabadust selles osas).
 
* lähtefaili maksimaalne suurus on 1MB (ehk siis väga suurt andmebaasi lähtekoodi lisada ei saa, samas 1MB annab mingil määral vabadust selles osas).
  
Tudengitel on võimalik kasutada lõimeid (''thread'''e) oma lahenduses.  
+
Tudengitel on võimalik kasutada lõimi (ingl k. ''thread'') oma lahenduses.  
  
  

Redaktsioon: 19. detsember 2014, kell 15:06

Üldine

Tudengitel on võimalik võrrelda oma Gomoku algoritme teiste tudengite lahendustega. Selleks korraldatakse uue aasta alguses turniir, kus loodud programmid omavahel mängivad. Parimad tudengid saavad boonuspunkte. Loe täpsemalt järgnevatest peatükkidest.

Esitamine

Osaleda saab kas üksinda või kaheliikmelise võistkonnana.

Osalemiseks on vaja oma lahendus esitada võistlusele. See toimub kahes etapis:

1) 23. detsembril registreerimine - esitada oma soov võistlusel osalemiseks. Selleks saata email ago.luberg@ttu.ee. Kirja pealkiri "Gomoku tournament", sisusse võistlejate nimed, matriklikoodid.

Koos võistlemissooviga on võimalik esitada ka oma lahendus. See lahendus ei pea olema lõplik. Kõik lahendused, mis 23. detsembriks on saadetud, teevad juhuslikult mänge teiste lahendustega. Iga tudeng saab tagasisidet oma programmi mängude kohta. Seega on see hea võimalus testida koodi ja avastada vigu.

2) 31. detsembril lõplik kood - esitada oma lõplik kood, mis võistlusel osaleb. Võistkond saadab emaili ago.luberg@ttu.ee aadressil pealkirjaga "Gomoku tournament", kus on (igaks juhuks uuesti) võistlejate nimed, matriklikoodid ning lahenduse lähtekood. Lahendus peab olema tervenisti ühes failis. Täpsem juhis esitamise kohta selgub jooksvalt (arvatavasti StudentStrategyXXXXXX.java, kus XXXXXX on matriklinumber, milles on klass, mis implementeerib ComputerStrategy interface'i).


Turniiri reeglid

Osalemise eeldus võiks olla see, et teie kood võidab vähemalt tugevamat vastast vähemalt pooltel juhtudel. Seda otseselt kontrollima ei hakata.

Ranged reeglid rakendusele (mille eiramine tähendab disklahvi):

  • ei tohi kasutada võrguühendust
  • ei tohi kasutada faile (ei lugemiseks ega kirjutamiseks)
  • ei tohi üritada vastase programmi segada mittemänguliselt (ehk siis koodis mingil kujul; laual vastase takistamine on vastupidi soovituslik)
  • programm ei tohiks oma käigu ajal anda Exceptionit

Muud reeglid lahendusele:

  • peab töötama nii valgete kui mustade nuppudega mängides
  • peab tagastama käigu vähemalt 1.0 sekundi jooksul. Kui seda ei juhtu, tehakse kasutaja eest suvaline käik (vabale ruudule). TODO: määrata konstant TIME_LIMIT, millega saaks vajadusel mängida.
  • kasutada saab vaid Java standardteegi funktsionaalsust. Kui tahate mingit muud algoritmi kasutada, peate selle lähtekoodi kaasa panema, JAR-faile ei saa kaasa panna.
  • kood peab olema võistleja(te) enda kirjutatud. Kui õppejõul tekib kahtlusi, on tal õigus lasta tudengi(te)l oma koodi seletada.
  • programm peab töötama ka mittetühjalt algseisult alustades.
  • lahendus töötab nii 10x10 kui 20x20 laual.
  • lähtefaili maksimaalne suurus on 1MB (ehk siis väga suurt andmebaasi lähtekoodi lisada ei saa, samas 1MB annab mingil määral vabadust selles osas).

Tudengitel on võimalik kasutada lõimi (ingl k. thread) oma lahenduses.


Turniiri korraldus

Sõltuvalt osalejate arvust korraldatakse alagrupi turniirid ja seejärel finaalturniir (play-off). Korraldajatel on õigus teha alagrupi turniiri ja finaalturniiri vahel mõnepäevane paus, mille jooksul finaalturniirile saanud võistlejad saavad oma alagrupi mänge üle vaadata ja soovi korral lahendust täiendada.

Mängude korraldamine pole veel selge. Arvatavasti toimub iga kahe mängija vahel mäng selliselt:

  • mängitakse 10x10 laual N mängu nii, et mängija A on valge ja B on must.
  • mängitakse 10x10 laual N mängu nii, et A on must ja B on valge.
  • korratakse sama 20x20 laua peal
  • sõltuvalt jooksvale tulemusele, korraldatakse mänge erinevatest algseisudest. Ehk siis on mingi konkreetne algseis, kus ükskord alustab mängija A ja teisel korral mängija B.

Kui osalejaid on piisavalt näiteks rohkem kui 4 või rohkem kui 8, korraldatakse alagrupiturniir. Alagruppidesse loositakse mängijad juhuslikult. Igasse alagruppi peaks jääma 3-4 mängijat, kellest 2 saavad edasi. Vastavad numbrid võivad muutuda. Oluline oleks see, et finaalturniirile pääsejate hulk oleks kahe aste (et play-off toimiks õigesti).

Finaalturniiri puhul võidakse korraldada ka variant, kus kõik mängivad kõikidega läbi. See peaks andma põhjalikuma ülevaate parimast mängijast (play-off süsteemis võib mõni hea mängija kogemata välja langeda, sest mängib kohe esimeses voorus turniiri võitjata, muidu see mängija oleks võinud 2. koha saada).

Lisapunktid

Parimad võistkonnad saavad lisapunkte, mis lähevad arvesse lõpphinde saamisel. Boonuspunktide suurus selgub peale seda, kui on paigas, palju osalejaid on. Kindlasti jagatakse välja kahele parimale võistkonnale lisapunktid. Kui osavõtjaid on palju, saab see number suurem.

Et julgustada võistlusest rohkem osa võtma, teeme lisapunktidega nii, et need, kellel neid vaja pole (kellel on näiteks hinne juba käes), nemad punkte ei saa (selle võrra saavad järgmised kohad. Küll aga tiitel jääb ikka neile alles (näiteks esikoht jne).

Tulemused

Võitja on ... (avaldatakse hiljem).