Skip to content

tiberiu92/Tron-Many

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 

Repository files navigation

##Tron-Many: Proiectarea algoritmilor - Proiect 2013##

Nume echipa: Shift-Delete
Membri: Manta Paul-Cristian (323CB), Popescu Gabriel-Cosmin (323CB), Scarlat Tiberiu (323CB), Velea Cosmin (323CB)

HackerRank: hackerrank.com/ShiftDelete
Gmail: tron.shift.delete@gmail.com

###Etapa II###

Tag: stage-ii-submission

Pentru aceasta etapa am implementat un algoritm ce foloseste echilibrul Nash pentru a gasi mutarea care minimizeaza sansele de a pierde meciul. Pentru a evalua starea hartii (si a decide care jucator este in avantaj), am aproximat cat de raspandita este zona accesibila fiecarui jucator in urmatorul fel (pseudocod):

area       := getProximalArea(player) 
rowSpread  := rowVariance(area)
colSpread  := colVariance(area)
areaSpread := rowSpread * colSpread  

Functiile rowVariance si colVariance calculeaza varianta sufrafetei date (din statistica), dupa cele doua axe. Daca toate celulele se afla pe o singura linie sau coloana, atunci rowSpread, respectiv colSpread, va fi zero deci si produsul celor doua va fi zero.

Algoritmul ce foloseste echilibrul Nash cauta cu o adancime foarte mica (din motive de eficienta), ceea ce inseamna ca nu va avea o performanta foarte buna cand jucatorul este prea departe. Pentru a combate asta, am implementat si algoritmul A*, pentru a ne putea apropria de adversar cand suntem prea departe. Euristica folosita impreuna cu A* este distanta Manhattan.

Solutie: hackerrank.com/.../submissions/game/635151
Meciuri stage2bot: a - b - c - d - e - f - g - h - i - j - k - l - m - n - o - p

###Etapa I###

Tag: stage-i-submission

Pentru etapa I am implementat un AI foarte rudimentar: tot ce face este sa se duca tot timpul in directia celui mai lung coridor pe care il poate vedea la un moment dat. Am cazut de comun acord sa abordam o solutie cat mai simpla posibil in aceasta prima etapa pentru a ne putea incadra in timp.

Insa codul pe care l-am scris este facut in asa fel incat sa poata fi extins si facut mai complex in etapele urmatoare; spre exemplu, clasa GameWorld, pe care am facut-o in asa fel incat sa ne fie mai usor in viitor sa implementam un algoritm de tip minimax.

Nota: Codul trimis pentru aceasta etapa nu este de pe branch-ul principal, asa ca unule parti ale clasei GameWorld nu sunt cele mai recente pe care le avem pe repository-ul de pe GitHub.

Solutie: hackerrank.com/.../submissions/game/624187
Meciuri RandomBot: a - b - c - d - e - f - g - h - i - j - k - l - m - n - o - p
Meciuri explorer: a - b - c - d - e - f - g - h - i - j - k - l - m - n - o - p

About

Proiectarea Algoritmilor - Proiect 2013

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages