Šta je novo?

CodeChallenge

Odredjen datum prvog turnira

Stiglo je nekoliko prijava medju kojima i nekoliko veoma jakih takmicara. Uskoro ce na sajtu biti objavljeno zvanicno saopstenje o konacnom terminu turnira.

Ko ne zna o cemu se radi moze da pogleda sajt. Ukratko, programeri treba da naprave svoj dll koji treba da igra jednu logicku igru protiv drugih dll-ova. Sve moze da se uradi za sat-dva, mada mislim da za to vreme ne moze da se napravi igrac koji ce da pobedi neke do sada pristigle.
 
Prodje deset dana i sa Benchmark-a se niko ne prijavi...
 
Nema veze. Na ovom prvom turniru ce nas biti manje od 10, ali ce se zato svakog meseca odrzati novi turnir pa ce nas vremenom sigurno biti vise.

Svi ce dobiti log odigranih partija tako da ce moci da unaprede svog igraca i posalju ga za sledeci turnir. Posle par meseci i par turnira, napravicu novi engine za novu igru pa ce se paralelno nastavljati vise turnira.
 
Ideju podrzavam.... samo pazi da ne napravish turnir sa bekom vec postojecom igrom, posto takvih turnira po net-u ima puno. Znachi ORIGINALNOST.
 
Prekjuce je odrzan prvi turnir. Od desetak programera, sto amatera sto profesionalaca, samo je troje uspelo da dovrsi svoje igrace i prijavi se na takmicenje. Zbog toga nije odrzan pravi takmicarski vec revijalni turnir.

Nadam se da ce se, pored onih koji zavrsavaju svoje takmicare, prijaviti jos onih koji zele da se igraju programirajuci. S obzirom da ne treba puno vremena, moze da se oproba bilo ko ako bar malo zna da programira jer je u osnovi igra jednostavna.

Jos jednom, adresa sajta je: http://codechallenge.4t.com
 
Takmicenje u programiranju AI

Za takmicenje u pravljenju AI-a za logicke igre prijavilo se nekoliko novih ljudi, ali niko sa ovog sajta. Ima li ovde ikoga ko voli da programira?

http://codechallenge.4t.com
 
Novosti na cetvrtom turniru

Na sajtu je objavljen novi game engine koji omogucava postavljanje neutralnih polja pre pocetka partije. Ovim ce se izbeci odigravanje uvek istih partija algoritama koji u sebi nemaju nikakvu "randomizaciju". Tako ce od sledeceg, cetvrtog turnira biti potrebno eksportovati i drugu funkciju koja sluzi za postavljanje ovih neutralnih polja.

Molim sve takmicare koji su se vec prijavili i one koji tek zele da naprave svoj dll za takmicenje, da pogledaju stranicu sa pravilima na sajtu http://codechallenge.4t.com
 
Borba "pametnih" DLL-ova na novoj adresi (www.codechallenge.com)

Sajt za takmicenje u pravljenu AI (vestacke inteligencije) za logicke igre redizajniran je i prebacen na novi domen: www.codechallenge.com

Napravite DLL koji ce se boriti protiv DLL-ova drugih takmicara u nekoj od logickih igara.
 
Pa nazalost ovde i nema mnogo mogucnosti da se iskazu programske mogucnosti jer je ima malo mogucih poteza (uvek 10 razlicitih u tvom slucaju). Jednostavno se odradi brute force svih mogucih kombinacija sa tom razlikom da ne pamtis poteze nego stanja u koje ti potezi dovode, primera radi
potez 1. 0 1
potez 2. 2 3

do istog stanja dovodi i sledeca kombinacija
potez 1. 2 3
potez 2. 0 1

jasno je da postoji jos dve kombinacije koje ce dovesti u ovo stanje sto izuzetno smanjuje broj mogucih kombinacija.

Znaci kada odradis brute force svih mogucih kombinacija i napravis stablo sa 10 grana. jednostavno pogledas koja su sve dobitna stanja i vracas se na taj nacin u nazad tako sto u svakom stanju odredis koji te to potez vodi u dobitno stanje i tu se prica onda zavrsava. Posle toga treba uraditi samo dump celog tog drveta u neku strukturu. recimo dvodimenzioni niz od 11 * n (gde je n broj svih mogucih stanja) a onaj 11. element je izbor najboljeg stanja ili cak moze taj integer da se bitski podeli pa da se na taj nacin odredi potencijal za svako stanje.

Ovakav algoritam sam radio pre jedno 6-7 godina na fakultetu kada smo pravili isto takmicenje doduse tabla je bila 8x8, imam cak negde source, jeste da sam brute force radio jedno 10-15 dana dok nije proleteo kompletno strukturu, ali posle toga ovaj algoritam igra svaki potez kroz manje od milisekunde 😉

za situaciju bez neutralnih polja bi izgledao ovako nekako

/* states je dvodimenzioni niz[n][11] generisan brute force programom */
int GameMove(int move) {
static unsigned int current_state=0,player=0;
unsigned int new_state;
int my_move,;

if(move==-1) {
my_move=state[0][10];
current_state=state[0][my_move];
}
else {
new_state=states[current_state][move];
my_move=states[new_state][10];
current_state=states[new_state][my_move];
}

return my_move;
}

I kao sto vidis duzina funkcije je jako kratka, i ultra brza. :banana:
 
Poslednja izmena:
Eh kada bi sve bilo tako lako

Cak i za mnogo manje table nije moguce primeniti brute force u ovom slucaju. Vreme za odigravanje poteza je 2 sekunde i svi danasnji racunari jedva da mogu da skrpe nekih 6 poteza u napred. Da ne pricam da je u pravilima zapisano da se turnir odigrava na racunaru na 1.1 GHz.

Ako mislis da mozes da napravis spremljen odgovor na svako stanje table, mozes da probas, ali ne bih da racunam koliko bi to fajl trebao da bude. I u sahu se do jedne pozicije moze doci na mnogo nacina, i tabla je mnogo manja, pa je covek na kraju pobedio racunar nekoliko hiljada puta brzeg od nasih racunara.

U ostalom, ovo je takmicenje u nadmudrivanju u pravljenju vestacke inteligencije. Svako ima neku svoju ideju koju pokusa da realizuje i nekima zaista ide veoma dobro. Nekoliko programera je veoma iskusno i rade kao profesionalci tako da nije lako biti prvi.
 
Nazad
Vrh Dno