U organizaciji skupine Natjecateljsko računarstvo i Povjerenstva za popularizaciju znanosti na FERIT-u, od 21. ožujka do 21. travnja održava se
nagradna igra
“Super X-O”
Vaš zadatak je napisati program (u programskom jeziku C, C++ ili Python) koji će se natjecati s drugim programima u igri super X – O i poslati ga na e-mail adresu
popularizacija.znanosti@ferit.hr .
Super X – O ili ultimativni X – O možete isprobati na npr. https://www.michaelxing.com/UltimateTTT/v3/
Nakon što natjecatelj pošalje svoj program, taj će se program boriti s drugim programom, tj. točnije sa svakim od programa kojeg su do tog trenutka poslali preostali natjecatelji. Dva će se programa boriti u sto uzastopnih partija. Svakom od natjecatelja nakon borbe će se dodati onoliki broj bodova koliko njegov program postigne pobjeda u tih sto igara s protivničkim programom.
Algoritam koji postigne najviše pobjeda u svim borbama bit će ukupni pobjednik. Ljestvica najboljih natjecatelja (na kojoj će, kao i kod igre škare-kamen-papir-gušter-Spock, biti ime koje nam je natjecatelj poslao) bit će svakodnevno ažurirana i oglašavana na Fakultetskim internetskim stranicama.
Program koji bude posrednik između dva natjecateljska programa pobrinut će se da u 50 partija igre Super X-O igru započinje jedan protivnik, a u preostalih 50 partija drugi.
Konačnog pobjednika proglasit ćemo u utorak, 23. travnja i konačne rezultate objaviti na internetskim stranicama FERIT-a.
PRAVILA:
- Pravo sudjelovanja na nagradnoj igri imaju svi natjecatelji koji svoj kod za pogađanje broja pošalju do 21. travnja na e-mail adresu popularizacija.znanosti@ferit.hr, bez obzira na dob, stručnu spremu itd. Svaki natjecatelj programski kod može poslati točno dva puta, prvi puta pod imenom po želji, a drugi puta pod tim istim imenom s tim da u drugoj prijavi iza tog imena treba upisati „2“, tj. ako natjecatelj pošalje kod koji nakon borbe s ostalim algoritmima postigne određeni broj bodova i ako nakon toga natjecatelj uoči da program može poboljšati, ima pravo i na drugu priliku, tj. na natjecanje može poslati i drugi, poboljšani kod.
- Osim na gore navedenu e-mail adresu, kod se može donijeti uživo na sastanak grupe Natjecateljsko računarstvo, tj. svakog utorka u 18.30 u T 2-14.
- Maksimalno vrijeme računanja za svaki potez je 5 sekundi (program će se testirati na računalu s Intel i7 7700 procesorom).
- Ako program pokuša znak postaviti na nedozvoljeno mjesto, automatski gubi započetu partiju.
- Na početku igre program koordinator će jednom od programa poslati slovo P što će značiti da taj igrač započinje igru, a drugom programu slovo D što znači da u toj partiji taj program igra drugi. Drugim riječima vaš program na početku rada treba uzeti podatak tipa karakter koji će bili ili P ili D (npr. Python: a= input (), C++: cin>>poredak; C: scanf(“%c”,&poredak) )
Nakon toga program koji igra prvi ispisuje svoj potez u obliku dva prirodna broja od 1 do 9 odvojenih jednim razmakom, što znači da je njegov potez postavljanje slova X na tu koordinatu u polju na sljedećoj slici1.
pri čemu je na primjer prvi izlaz prvog igrača 2 5 predstavljen slikom2:
- prvi je igrač svoj znak X postavio u drugi red i peti stupac. Koordinate gornjeg lijevog polja su (1, 1), a donjeg desnog (9, 9).
Nakon toga je na potezu drugi igrač koji prvo zatraži dvije koordinate koje je prvi igrač kreirao (sa input () ili cin>> ili scanf), a onda on kreira na osnovu svoje taktike svoj potez također kao dva broja i tako dalje. Proces uzimanja dva broja i kreiranja nova dva broja traje dok neki od igrača ne napravi tri ista znaka u redu ili u stupcu ili na dijagonali nekog od devet manjih X – O podskupova, tj. dok ne pobjedi u nekom od devet normalnih, uobičajenih X – O „boksova“.
Igrač koji prvi negdje poveže tri svoja znaka pobjednik je.
Ukratko, svaki od natjecateljskih programa prvo prima kao ulaz slovo P ili D, a zatim naizmjence, ako je dobio P, prvo generira par brojeva od 1 do 9 pa uzima par brojeva od 1 do 9 itd, a program koji je dobio D prvo uzima par takvih brojeva pa ispisuje takvav par pa ponovo uzima pa ponovo ispisuje, itd. Važno pravilo je da samo u prvom potezu prvi igrač stavlja svoj znak na bilo koje od 81 polja. Jer kada bilo koji od igrača postavi svoj znak na neko polje, onda drugi igrač mora svoj znak postaviti u malu 3×3 križaljku X – O koja se u cijeloj mreži nalazi na upravo onom mjestu na kojemu je njegov protivnik odigrao prethodni potez u svojoj maloj 3×3 mreži. Na primjer, za potez 2 5 kao gore, pošto je to potez postavljen u središte malog 3×3 X – O-a, sljedeći potez protivničkog igrača mora biti postavljen u središnju X – O igru, tj. na neko od polja u boksu koji se nalazi u dijelu velike križaljke od 4 4 do 7 7.
Ukoliko je cijela 3×3 mala igra u kog igrač mora postaviti potez već zauzeta, tj. u svako do 9 polja već je postavljen neki znak, onda igrač može postaviti svoj znak na bilo koje polje cijele 9×9 križaljke.
Program koordinator kog će kreirati organizatori natjecanja pobrinut se za prvenstvo igranja, zatim je li dano polje dozvoljeno ili ne te će kreirati partije i brojati rezultate.
- Prvih troje najboljih natjecatelja bit će nagrađeni FERIT-ovim paketima.
SRETNO.
slika1
slika2