Sunteți pe pagina 1din 7

Proiectarea Algoritmilor 2013

Tema 2

Proiectarea Algoritmilor - Tema 2


Dat a publicare: 27 martie 2013 Deadline: 14 aprilie 2013 - 23:55 Vicent , iu Ciorbaru Radu Iacob Alexandru Tudoric a

Proiectarea Algoritmilor 2013

Tema 2

Introducere

Ion s , i Vasile sunt foarte pasionat , i de fotbal s , i mai ales de strategiile echipelor. Cum rivalitatea dintre cei doi este at at de mare, ecare se crede cel mai bun. Vasile vrea s a-i vin a de hac lui Ion pentru gardul stricat as a l-a provocat la , a c un meci de fotbal. Cum doar ei, f ar a echip a nu s ata calit at apitan , i pot ar , ile de c s-au rezumat la o alta variant a a fotbalului, fotbalul pe h artie. Vasile s ncearca s a tris , tie ca Ion va , eze s , i ca probabil va folosi un program care s a-i spun a unde s a mute. Ca s a-s as a roag a pe voi s a i , i asigure c , tigul, Vasile, v scriet i va garanta succesul , i un program ce va juca pentru el acest meci s , i care impotriva lui Ion.

Regulile jocului

Fotbalul pe h artie se joac a n doi juc atori, ecare mut and pe r and. Scopul jocului este de a ajunge n poarta advers a. Jocul se termin a c and s-a ajuns ntr-o poart a sau nu mai sunt mut ari valide. Cel care era la mutare s , i nu mai poate muta n nici o direct ie pierde. , Tabla de joc Jocul se joac a n mod normal pe o h artie de matematic a. Spat , iul de joc este format dintr-un dreptunghi de 10 p atr at ele n lungime s i 8 n l a time ce reprezint a , , terenul de fotbal. La cele dou a capete ale terenului se mai adaug a nc a dou a p atr at ele, pe mijloc, ce vor reprezenta port ile. , ,

Figure 1: Tabla de joc

Proiectarea Algoritmilor 2013

Tema 2

Mut arile posibile O mutare const a n trasarea unei linii pe o latur a a unui p atrat sau pe o diagonal a a acestuia. Acestea sunt codicate in sensul acelor de ceasornic conform n imagine.

Figure 2: Mutari posibile

Dac a v arful n care s-a ajuns dup a mutare a mai fost atins n prealabil (de oricare dintre cei doi juc atori) cel ce era la mutare este obligat s a mai fac a o mutare. O latur a sau diagonala folosit a NU mai poate refolosit a.

Figure 3: Mutari multiple n aceeasi rund a

Proiectarea Algoritmilor 2013

Tema 2

Deasemenea, un juc ator nu poate face o mutare care s a completeze o latur a ce reprezint a marginea terenului (laturile ros ii din gura 2), dar dac a a ajuns pe , margine este obligat s a mai fac a o mutare care l readuce n interiorul terenului. In gura 3, juc atorul ros acut prima mutare, apoi cel albastru. La mutare , u a f este juc atorul ros u si printre celelalte mut ari disponibile poate face cele doua , mut ari trasate cu linii punctate, am andou a n aceeas a. , i rund

Figure 4: Lovire margine

Jocul ncepe din punctul central al terenului. Jucatorii traseaz a linii alternativ, dar sunt obligat i s a continue de unde a r a mas cel a lalt juc a tor. ,

3
3.1

Mod de utilizare
Server

Jocul mpotriva a doi bot , i este gestionat de un server. Acesta pornes , te primul si apoi va lansa n execut l , ie cei doi bot , i dat , i ca parametru. Primul parametru reprezint a comanda pentru a porni juc atorul 1, iar cel de-al doilea este comanda pentru a porni juc atorul 2. Serverul redirecteaz a intrarea s , i ies , irea bot , ilor astfel: Bot , ii vor citi de la intrare mesajele de la server, iar serverul va citi de la iesirea ecarui bot mesajele acestuia. Astfel, pentru a comunica cu serverul, un bot va citi de la standard input s , i va scrie la standard output Pentru a rula serverul: python2 server.py <comanda-bot1> <comanda-bot2> [-t <timeout>]

Proiectarea Algoritmilor 2013

Tema 2

3.2

AI

Botul utilizat pentru testarea temei poate rulat n felul urm ator: ./<nume-exec> <ID-juc ator A sau B sau silent> <nivel-dificultate 0,1,2> <seed> Botul de dicultate 0 este cel mai us nvins, acesta f ac and n mare parte , or de doar mut ari valide, f ar a o strategie clar a. Botul cu ID-juc ator silent nu va as n scripturi. , a mesaje pe ecran. Util pentru rulare

3.3

Viewer

Pentru a vizualiza meciurile jucate vi s-a pus la dispozitie un program de vizualizare log-uri de jocuri. Aceste loguri sunt generate de server sub numele server log Viewerul poate rulat cu urm atoarea comanda: ./viewer [nume-log] Viewerul poate rulat s ar a s , i f , ier de intrare. Formatul datelor de intrare este acelas i cu cel al log-ului s i este explicat la rularea viewerului. , , Viewer-ul are urm atoarele comenzi denite: Tasta D - o mutare nainte Tasta A - o mutare napoi Tasta ESC - Iesire viewer Viewerul la ies NOTA: nchide cu segmentation fault. Bug-ul vine din , ire se biblioteca freeglut. Comportamentul este normal.

Protocol de comunicare

Botul primeste de la inputul standard cate un mesaj/linie. Mesajele vor avea primul caracter S, M sau F. S, acest mesaj va trimis botului care va face prima mutare, cel alalt program va primi un mesaj de tip M prima data M, acest mesaj reprezinta ce a f acut adversarul c and a fost tura lui. Dup a M este un intreg ce reprezint a numarul de mut ari f acute n tur a (N). Dup a acest ntreg urmeaz a o serie de N cifre, ecare cifr a reprezint a o mutare. Fiecare mutare este descris a de o cifr a de la 0 la 7 dup a cum urmeaz a: 0-N 1 - NE 2-E 3 - SE 4-S 5 - SV 6-V

Proiectarea Algoritmilor 2013

Tema 2

7 - NV Exemplu de mesaj M: M 5 0 1 2 3 4 Acest mesaj semnic a 5 mut ari ntr-o tur a: Prima spre N, a doua spre NE, a treia spre E, a patra spre SE s i ultima spre S , F, acest mesaj va indica terminarea jocului. Catre iesire botul va genera mesaje identice cu mesajul M ce va indica mut arile pe care le face. botul va considera tot timpul c a poarta lui se a a spre Sud, iar poarta advers a spre Nord. Atent ie! Fiecare mesaj trimis de bot trebuie s a se nalizeze cu caracterul \n ,

Punctare

Tema va rulat a cu un seed prestabilit (vezi preciz ari) n ambele congurat , ii, cazul n care botul vostru are prima mutare precum s n care este al doilea , i cazul la mutare. Se vor rula teste pe toate cele trei nivele de dicultate 0, 1 s , i 2 (vezi AI). Vor jucate n total 6 meciuri: c ate 2 meciuri pe ecare dicultate C as a un punctaj de 10 PUNCTE. , tigarea unui meci pe dicultatea 0 acord C as a un punctaj de 15 PUNCTE. , tigarea unui meci pe dicultatea 1 acord C as a un punctaj de 20 PUNCTE. , tigarea unui meci pe dicultatea 2 acord Tema trebuie s a respecte regulile generale de trimitere a temelor. In s a descriet , ierul README va trebui s , i solut , ia pe care at , i ales-o pentru a implementa logica AI-ului. Corectorii s a dreptul de a sc adea puncte dac a vor considera acest lucru , i rezerv necesar.

Format arhiva s , i testare

Temele pot testate automat pe vmchecker - acesta suport a temele rezolvate in C/C++ s a dorit a realizat n alt limbaj trebuie s a trimitet , i Java. Dac , i s , i tema ,i un e-mail lui Traian Rebedea (traian.rebedea@cs.pub.ro) n care s a i ceret ,i explicit acest lucru. Arhiva cu rezolvarea temei trebuie sa e .zip s a cont a: , i s , in Fis a , ierul/s , ierele surs Fis , ierul Makele Fis , ierul README Fis a cont a , ierul pentru make trebuie denumit obligatoriu Makele s , i trebuie s , in urm atoarele reguli: build, care va compila sursele s , i va obt , ine executabilul. clean, care va s , terge s , ierele obiect s , i executabilul generat.

Proiectarea Algoritmilor 2013

Tema 2

Atentie! Numele regulilor trebuie s a e exact cele de mai sus. Atent , ie Pentru cei ce folosesc C/C++ NU este permis a compilarea cu opt iuni de optimizare a , codului (O1, O2, etc.).

Preciz ari
Numele executabilului trebuie s a e: bot sau Bot.class Modul de rulare a botului vostru trebuie s a e urm atorul: ./bot <bot-ID A|B> <seed> sau java Bot <bot-ID A|B> <seed> Seed-ul ce va folosit la testare este 42 pentru am andoi bot , ii Pentru a putea rula viewer-ul pe linux trebuie instalat pachetul freeglut a distribut , iei folosite. Exemplu pentru Ubuntu: sudo apt-get install freeglut3-dev Repository disponibil cu resursele temei la zi: aici

S-ar putea să vă placă și