Table of Contents

Regulament proiect 2013

În acest an vă propunem realizarea unui program ce controlează un jucător de Tron într-un simulator simplu al variantei “arcade” a jocului. Programul se poate realiza în oricare din limbajele de programare suportate [1]. Echipa de PA recomandă folosirea limbajelor C, C++, Java sau Python. Pentru alte limbaje, vă rugăm să ne contactaţi înainte de a începe implementarea.

Concursul se va desfășura folosind platforma pusă la dispoziție de către site-ul HackerRank special pentru concursul de la Proiectarea Algoritmilor 2013 [2]. Același joc este propus de către HackerRank, alături de către o serie de alte jocuri dificile în secțiunea “Jocuri multi-player avansate” [3], și același concept a fost folosit și la ediția a doua a AI Challenge [4]. Cum unii participanţi la aceste concursuri poate şi-au publicat sursele şi ideile online, vrem să fie clar că:

Proiectul va cuprinde 5 etape, după cum este prezentat în continuare. Fiecare etapă presupune dezvoltarea unui bot care va juca Tron din ce in ce mai inteligent, iar ultima etapă reprezintă un concurs la nivel de serie, iar apoi la nivel de an pentru a stabili marele câștigător al proiectului de PA din anul 2013. Fiecare echipă poate să își schimbe complet strategia de joc între etape dacă socotesc acest lucru oportun.

Etapa 0

Etapa 0 presupune formarea unor echipe de câte 3-4 persoane. Echipele se pot forma între oricare 3-4 studenţi din aceeaşi serie. Nu se permit echipe cu oameni din serii diferite decât dacă ați rămas fără niciun coechipier în seria voastră sau dacă sunteți restanțieri. Fiecare echipă va desemna un membru al acesteia cu rolul de căpitan. Căpitanul va avea, printre altele, sarcina de a trimite în numele echipei sale soluţiile pentru fiecare din etapele rămase. Ceilalţi membri ai echipei nu vor trimite soluţii, decât in cazul in care căpitanul nu poate face aceasta din motive obiective.

Această etapă va avea 1 săptămână. Punctajul alocat acestei etape este de 0 puncte.

Deadline-ul acestei etape este duminică, 3 martie 2013, ora 23:55.

Etapa 1

Prima etapă a proiectului presupune acomodarea echipelor cu site-ul HackerRank, cu problema de rezolvat la concurs și realizarea unei soluții simple care să joace corect. Aceasta nu trebuie să aibă un nivel de complexitate ridicat pentru obținerea punctajului maxim, întrucât evaluarea se va face împotriva unor boți cu strategii simpliste.

Pentru evaluarea soluțiilor trimise de către voi, va trebui să învingeți doi boți foarte simpli construiți de echipa de PA special pentru aceasta:

Botul vostru trebuie să invingă ambele soluții pe oricare hartă încărcată în sistem (în acest moment sunt 5 hărți și se alege o harta aleator pentru fiecare joc). Hărţile le puteţi descărca de aici.

Această etapă va avea 1 săptămână. Punctajul alocat acestei etape este de 0.4 puncte. Se va juca un meci cu RandomBot şi un meci cu Explorer. Un meci este format din 8 bătălii, deci veți avea 16 bătălii în total. Fiecare bătălie câștigată valoreaza 0.025p, iar o remiză 0.0125p.

Observatie (20/04/2013): Cei de la HackerRank au schimbat numarul de batalii acum 1-2 zile, fara sa ne intrebe. Daca ati prins 16 batalii intr-un meci, veti primi un numar injumatatit de puncte pentru fiecare, dar se iau toate bataliile dintr-un meci in considerare (astfel incat totalul pentru aceasta etapa va fi tot 0.4p daca castigati toate meciurile din cele 2 meciuri).

Deadline-ul acestei etape este luni, 15 aprilie 2013, ora 23:55 si a fost prelungit până duminică, 21 aprilie 2013 luni, 22 aprilie, ora 23:55 din cauza aglomerării de termene limita din acastă perioadă și a problemelor de testare (însă deadline-ul etapei 2 nu se modifică).

Atenție și la regula: “Nefolosirea unei soluții pentru managementul surselor va atrage o depunctare de 0.1p pentru etapele 1 și 2.” (detalii despre alternative de folosire a tool-urilor de mangement a surselor cu access privat: http://cs.curs.pub.ro/2012/mod/forum/discuss.php?d=2592)

Etapa 2

A doua etapă a proiectului presupune realizarea unui bot mai complex, care poate să învingă botul Stage2Bot (link to be added) realizat de echipa de PA.

Botul vostru trebuie să invingă Stage2Bot pe oricare hartă încărcată în sistem (în acest moment sunt 5 hărți).

Această etapă va avea 2 săptămâni (sau o saptamana daca nu ati terminat la timp etapa 1). Punctajul alocat acestei etape este de 0.4 puncte. Se va juca un meci cu Stage2Bot, un meci fiind format din 8 bătălii. Fiecare bătălie câștigată valoreaza 0.05p, iar o remiză 0.025p.

Deadline-ul acestei etape este luni, 29 aprilie 2013, ora 23:55.

Atenție și la regula: “Nefolosirea unei soluții pentru managementul surselor va atrage o depunctare de 0.1p pentru etapele 1 și 2.” (detalii despre alternative de folosire a tool-urilor de mangement a surselor cu access privat: http://cs.curs.pub.ro/2012/mod/forum/discuss.php?d=2592)

Etapa 3

A treia etapă a proiectului presupune realizarea unui bot complex și eficient, care poate să învingă botul Stage3Bot (link to be added) realizat de echipa de PA.

Botul vostru trebuie să invingă Stage3Bot pe oricare hartă încărcată în sistem (în acest moment sunt 5 hărți).

Această etapă va avea 2 săptămâni. Punctajul alocat acestei etape este de 0.4 puncte. Se va juca un meci cu Stage3Bot, un meci fiind format din 8 bătălii. Fiecare bătălie câștigată valoreaza 0.05p, iar o remiză 0.025p0.06p, iar o remiză 0.03p. În felul acesta, se poate obține punctajul maxim cu 6 victorii și 2 remize. Cu toate acestea, nu se va acorda bonus pentru această etapă, iar punctajul va fi limitat la 0.4 puncte chiar dacă obțineți 8 victorii.

Deadline-ul acestei etape este luni, 13 mai 2013, ora 23:55.

Etapa 4

Această etapă va fi dedicată concursului final pentru stabilirea celor mai bune proiecte care joacă Tron. Între etapele 3 și 4, echipele vor lucra pentru îmbunătățirea strategiei de rezolvare a jocului în vederea ocupării unui loc cât mai bun în competiția finală. Astfel, se va organiza un campionat între toate echipele din anul 2, însă punctajele vor fi acordate separat la nivel de fiecare serie așa cum este descris mai jos.

În cadrul concursului, se va folosi metoda de calcul a scorului folosită în mod uzual pe site-ul HackerRank pentru jocurile competitive (a se citi sectiunea 1.1 publicată aici). În mod clar, prin aceeași metodă vom determina și marele câștigător al concursului de la proiectul de PA din 2013 (nu există punctaj suplimentar, ci doar laurii și felicitările cuvenite celui mai tare proiect).

Această etapă va avea 1 săptămână. Punctajul pentru aceasta etapă va fi de maxim 0.8 puncte si se va acorda exclusiv pe baza clasamentului final la nivel de serie.

Locul 1 va primi 0.8 puncte
Locul 2 va primi 0.7 puncte
Locul 3 va primi 0.65 puncte

Restul proiectelor vor primi, în funcţie de locul în clasament, între 0 si 0.65 puncte, marja între două proiecte consecutive fiind de 0.65/(număr_proiecte_finaliste-3)

Deadline-ul acestei etape este duminică, 19 mai 2013, ora 23:55

Alte mențiuni

Reminder!
Căpitanul va avea, printre altele, sarcina de a trimite în numele echipei sale soluţiile pentru fiecare din etapele rămase. Ceilalţi membri ai echipei nu vor trimite soluţii, decât in cazul in care căpitanul nu poate face aceasta din motive obiective.

Observații

  1. Cerințele de la o etapă trebuie îndeplinite de o singură variantă a botului (de ex. nu se pot trimite două variante de bot, dintre care una merge pe anumite hărți, iar cealaltă pe alte hărți).
  2. La fiecare etapă, fișierul README trebuie să conțină și un link către profilul soluției trimise pe HackerRank (www.hackerrank.com/bucharest-tron/submissions/game/[NR]), precum și link-uri către meciurile pe care vreți să le luăm în considerare la notare pentru fiecare etapă (www.hackerrank.com/showgame/[NR]). Dacă este cazul, echipa de PA are voie să rejoace meciurile și pe alte hărți pentru a se convinge că rezultatele obținute nu sunt o întâmplare.

Conținut arhivă etape
Pentru etapele 1-4 va trebui să încărcați pe Moodle o arhivă zip care sa conțină cel puțin următoarele fișiere:

Fișierul acesta se va construi interativ, lucrând peste cel trimis la etapele anterioare.

Tot în fișierul README este obligatoriu sa menționați ce soluție pentru managementul surselor folosiți (Git, SVN, CVS, etc.) și să acordați acces la repository-ul vostru persoanei desemnate să corecteze proiectul de PA (dacă acesta vă cere acest lucru). Nefolosirea unei soluții pentru managementul surselor va atrage o depunctare de 0.1p pentru etapele 1 și 2.

Ce mai trebuie sa conțină fișierul README: ce a făcut fiecare membru al echipei în etapa curentă, mediu de dezvoltare folosit, mod de compilare, structura proiectului (clase), surse de inspiratie, surse de cod (pentru structuri de date de exemplu) si, cel mai important, abordarea algoritmica a etapei: ce algoritmi ati folosit, cum i-aţi combinat, de ce, complexităţi, etc. Nu neapărat in ordinea aceasta şi pot apare și alte elemente pe care le considerați utile, interesante, etc.

Atenție! Deadline-urile la proiect sunt hard, deci nu se permit întârzieri. Dacă s-a ratat deadline-ul la o etapă, se poate lucra în continuare pentru celelalte etape, dar punctajul se va pierde pentru respectiva etapă.

Referințe

[1] - https://www.hackerrank.com/environment
[2] - https://www.hackerrank.com/contests/bucharest-tron/challenges/tron-many
[3] - https://www.hackerrank.com/ai/advmultiplayer
[4] - http://en.wikipedia.org/wiki/AI_Challenge