This shows you the differences between two versions of the page.
pa:regulament-proiect-2021 [2021/03/03 22:52] dragos.corlatescu [Etapa 1] |
pa:regulament-proiect-2021 [2021/04/29 10:47] (current) dragos.corlatescu [Etapa 3] |
||
---|---|---|---|
Line 15: | Line 15: | ||
</note> | </note> | ||
- | **Reguli de upload**: La fiecare etapă (în afară de etapa 0) veți salva în repository-ul vostru (cel specificat la înscriere) o arhivă zip, numită "EtapaX.zip" (unde X reprezintă numărul etapei: e.g. "Etapa1.zip") | + | **Reguli de upload**: Vom folosi pentru proiect repository-urile din cadrul platformei GitHub Classroom. Căpitanul echipei va trebui să intre pe assignment-ul corespunzător proiectului (https://classroom.github.com/g/w0Kdllwi) și să creeze echipa. Ceilalți membri vor intra ulterior pe același link și se vor înscrie în aceeași echipă. Repository-ul va fi creat automat și va fi privat, singurii care îl vor putea accesa fiind membrii echipei și responsabilii de proiect din echipa de PA. La fiecare etapă (în afară de etapa 0) veți salva în repository-ul vostru o arhivă zip, numită "EtapaX.zip" (unde X reprezintă numărul etapei: e.g. "Etapa1.zip") |
Arhiva va conține: | Arhiva va conține: | ||
Line 26: | Line 26: | ||
**Makefile**: | **Makefile**: | ||
- | Boții vor fi evaluați pe un sistem Linux/GNU pe 64 biți, deci **este foarte important să verificați că aveți un makefile care funcționează corect** pe Linux, chiar dacă lucrați pe Windows sau MacOS. Scriptul de testare va apela "cmake ." (dacă ați trimis un fișier CMakeLists.txt), "make build" pentru compilare, apoi "make run" pentru rulare. | + | Boții vor fi evaluați pe un sistem Linux/GNU pe 64 biți, deci **este foarte important să verificați că aveți un makefile care funcționează corect** pe Linux, chiar dacă lucrați pe Windows sau MacOS. Scriptul de testare va "make clean", "make build" pentru compilare, apoi "make run" pentru rulare. Makefile-ul trebuie să se afle în rădăcina arhivei pentru a putea fi rulat. Asigurați-vă că fișierul Makefile nu conține path-uri absolute (să poată fi rulat și pe alt sistem). |
- | Asigurați-vă că fișierul Makefile nu conține path-uri absolute (să poată fi rulat și pe alt sistem). | + | La fiecare push în repository, GitHub va verifica automat dacă există o arhivă cu numele corect și dacă cele 3 acțiuni din Makefile pot fi rulate. Puteți ignora erorile înainte de trimiterea finală a arhivei. |
- | Este util să aveți o regulă "clean", pentru a șterge executabilul și fișierele obiect/log-urile generate (dacă este cazul). | + | |
Fișierul **Readme** va respecta următoarea structură: | Fișierul **Readme** va respecta următoarea structură: | ||
Line 44: | Line 43: | ||
===== Etapa 0 ===== | ===== Etapa 0 ===== | ||
- | Etapa 0 presupune formarea unor echipe de câte 2-3 persoane. Echipele se pot forma între oricare 2-3 studenți din aceeași serie. Studenții restanțieri pot participa cu colegi de la orice serie. | + | Etapa 0 presupune formarea unor echipe de câte 2-4 persoane. Echipele se pot forma între oricare 2-4 studenți din aceeași serie. Studenții restanțieri pot participa cu colegi de la orice serie. |
- | 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 acest lucru din motive obiective. | + | Fiecare echipă va desemna un membru al acesteia cu rolul de căpitan. Căpitanul va avea, printre altele, sarcina de crea echipa pe GitHub Classroom. Ceilalţi membri ai echipei se vor conecta în echipa deja creată. |
- | Pentru a ajuta colaborarea în echipă, veți folosi un sistem de versionare a surselor numit **git**. Mai multe indicații [[https://ocw.cs.pub.ro/courses/pa/folosire-gitlab|aici]]. | ||
- | Pentru înscriere, accesați acest [[https://docs.google.com/forms/d/e/1FAIpQLSeCLuFg0dQ3bwjTBWlv4zR00qore8R--3Me6jV5r8P6dJU1QA/viewform|link]]. | + | Pentru înscriere, accesați acest [[https://forms.gle/ZcxsCmKq5YXXcpcA7|link]]. |
Această etapă va avea **1 săptămână**. Punctajul alocat acestei etape este de 0 puncte. | Această etapă va avea **1 săptămână**. Punctajul alocat acestei etape este de 0 puncte. | ||
- | Deadline-ul acestei etape este **duminică, 1 martie 2020, ora 23:55**. | + | Deadline-ul acestei etape este **miercuri, 10 martie 2021, ora 23:55**. |
===== Etapa 1 ===== | ===== Etapa 1 ===== | ||
Line 88: | Line 86: | ||
* Comanda go (1): după "new game", vom da comanda "Mode -> Machine White". În acest moment botul vostru va primi comanda "go" și va trebui să joace cu albul. La fel și aici, pionul trebuie mutat corect. | * Comanda go (1): după "new game", vom da comanda "Mode -> Machine White". În acest moment botul vostru va primi comanda "go" și va trebui să joace cu albul. La fel și aici, pionul trebuie mutat corect. | ||
* Comanda new (2): new game din nou, nimic spectaculos. | * Comanda new (2): new game din nou, nimic spectaculos. | ||
- | * Comanda force: imediat după "new game" vom intra în modul editare prin "Mode -> Edit Game". În acest moment botul vostru va primit comanda "force" și trebuie să-și actualizeze poziția în timp ce noi mutăm atât cu albul cât și cu negru. | + | * Comanda force: imediat după "new game" vom intra în modul editare prin "Mode -> Edit Game". În acest moment botul vostru va primit comanda "force" și trebuie să-și actualizeze poziția în timp ce noi (ca oameni) mutăm atât cu albul cât și cu negru. |
* Comanda go (2): la un moment dat vom da "Mode -> Machine _cine_este_la_mutare_". Atunci botul vostru va primi comanda go și trebuie să mute corect din poziția curentă până la final. | * Comanda go (2): la un moment dat vom da "Mode -> Machine _cine_este_la_mutare_". Atunci botul vostru va primi comanda go și trebuie să mute corect din poziția curentă până la final. | ||
- | Această etapă va avea **2 săptămâni**. Punctajul alocat acestei etape este de **0.4 puncte**. | + | <note important>Pentru a face debug și pentru a vedea ce primiți de la xboard/ce trimiteți la xboard puteți rula xboard în modul debug: |
+ | <code>> xboard -fcp "make run" -debug</code> | ||
+ | Presupunând că "make run" pornește engine-ul vostru (asta ar și trebui să facă) atunci comanda de mai sus va crea un fișier xboard.debug în care va scrie tot ce se întâmplă. | ||
+ | Dacă vreți să aveți un exemplu inițial, puteți juca cu un bot deja existent care vine instalat odată cu xboard prin comanda: | ||
+ | <code>> xboard -fcp "fairymax" -debug</code></note> | ||
- | Deadline-ul acestei etape este **17 martie 2020, 23:55**. | + | Această etapă va avea **3 săptămâni**. Punctajul alocat acestei etape este de **0.4 puncte**. |
+ | |||
+ | Deadline-ul acestei etape este **31 martie 2021, 23:55**. | ||
===== Etapa 2 ===== | ===== Etapa 2 ===== | ||
- | Programul va trebui sa implementeze macar un algoritm de bază minimax pentru a putea juca împotriva unui adversar. Programul va trebui să poată interpreta orice mișcare legală primită de la adversar, ceea ce presupune implementarea tuturor regulilor jocului. | + | Programul vostru va trebui să fie capabil să joace un joc de șah complet. Acest lucru implică interpretarea **tuturor mișcărilor legale** din jocul de 3 check chess. Pentru a decide următoarea mutare este suficient să aveți o strategie aleatoare (cu o singură excepție specificată în secțiunea următoare), dar dacă doriți să implementați ceva mai inteligent sunteți invitații noștri. |
- | Această etapă va avea **4 săptămâni**. Punctajul alocat acestei etape este de **0.5 puncte**. | + | Această etapă va avea <del>4</del> **5 săptămâni**. Punctajul alocat acestei etape este de **0.5 puncte**. |
- | Deadline-ul acestei etape este **21 aprilie 2020, ora 23:55**. | + | Deadline-ul acestei etape este <del>28 aprilie</del> **5 mai 2021, ora 23:55**. |
- | ==== Testare ==== | + | === Testare === |
- | Pentru testare ne vom folosi de engine-ul FairyMax care vine preinstalat cu xboard/winboard. Acesta va fi limitat să vadă doar 2 mutări în față (depth=2), deci nu va juca foarte bine. | + | |
+ | Testarea se va realiza manual folosind atât funcția "force" (Edit Game), cât și prin joc "normal". Scenariile pe care va trebui să le implementați și care vor fi și testate sunt următoarele: | ||
+ | - Mutări normale de șah - botul vostru trebuie să fie capabil să primească mutări, să-și actualizeze tabla și să răspundă cu o altă mutare. Toate piesele trebuie să știe să efectueze mutări | ||
+ | - Șah - în cazul în care primiți șah, botul vostru trebuie să se apere într-un fel și să nu facă mutări invalide | ||
+ | - Promovări - un pion care ajunge pe ultima linie trebuie să se poată promova într-un dintre piesele: Damă (Regină), Turn, Cal, Nebun | ||
+ | - En passant - https://en.wikipedia.org/wiki/En_passant | ||
+ | - Rocadă mică + Rocadă Mare | ||
+ | - Regulile de imposibilitate pentru efectuarea rocadei https://en.wikipedia.org/wiki/Castling#Requirements: | ||
+ | * Dacă regele se află în șah, nu se poate efectua rocada | ||
+ | * Dacă regele a fost mutat înainte de momentul actual, nu se poate efectua rocada | ||
+ | * Dacă turnul care ar putea fi folosit pentru rocadă a fost mutat înainte de momentul actual, nu se poate efectua rocada | ||
+ | * Dacă regele trece prin șah, nu se poate efectua rocada | ||
+ | * Dacă regele ajunge în șah prin rocadă, nu se poate efectua rocada | ||
- | Comanda care va fi rulată pentru testare va arăta (foarte) asemănător cu comanda de mai jos: | + | <note important>Pentru a putea testa ultima regulă (cea cu rocada) de mai sus **trebuie** ca strategia voastră de a muta să aleagă să facă rocada dacă acest lucru este posibil. Dacă ambele rocade sunt disponibile puteți să alegeți pe oricare dintre ele. În rest, mutările voastre pot fi aleatoare.</note> |
- | <note important>xboard -fcp "make run" -scp "fairymax" -secondInitString "new\nrandom\nsd 2\n" -tc 5 -inc 2 -autoCallFlag true -mg 10 -sgf partide.txt -reuseFirst false</note> | + | |
- | Explicarea parametrilor: | + | Ce nu vom testa, dar va fi nevoie de ele pentru etapa următoare vor fi condițiile de terminare a partidei: |
- | * **xboard** - aplicația pe care o folosim :-D poate fi atât xboard cât și winboard, dar checkerul va rula cel mai probabil pe linux deci vom folosi xboard. | + | - repetiție de **3** ori a //aceeași// poziție cu //aceeași// culoare la mutare -> remiză |
- | * **-fcp "make run"** - setează primul engine ca fiind engine-ul vostru. Vă reamintim că "make run" ar trebui doar să vă pornească engine-ul, nu și xboard-ul. | + | - 50 de mutări fără captură și fără mutări de pioni -> remiză |
- | * **-scp "fairymax"** - setează al doilea engine ca fiind engine-ul FairyMax. | + | - pat -> remiză |
- | * **-secondInitString "new\nrandom\nsd 2\n"** - string de inițializare pentru FairyMax care îi limitează adâncimea de căutare (depth) la 2. | + | - mat -> victorie |
- | * **-tc 5 -inc 2** - setează timpul de joc la 5 minute (timpul de start pentru fiecare jucător), iar la fiecare mutare jucătorul care a efectuat-o va primi încă 2 secunde. //Observație:// Nu este neapărat nevoie să implementați gestionarea timpului (deși probabil v-ar ajuta). Acest timp, împreună cu următorul parametru(-autoCallFlag true) previne situația în care voi ați da un depth prea mare engine-ului vostru și acesta ar sta foarte mult să se gândească și situația în care engine-ul vostru intră într-o buclă infinită și nu mai mută. | + | - 3 șahuri date unui rege (*regulă specială 3 check chess) -> victorie |
- | * **-autoCallFlag true** - setează xboard-ul ca atunci când i se termină timpul unuia din jucători să atribuie victoria celuilalt. | + | |
- | * **-mg 10** - numărul de partide jucate va fi 10 pentru teste. Automat se vor juca 5 cu albul și 5 cu negru. Voi puteți modifica parametrul sau chiar să îl scoateți pentru teste mai mici. | + | |
- | * **-sgf partide.txt** - în acest fișier se vor salva partidele jucate. | + | |
- | * **-reuseFirst false** - acest parametru îi specifică lui xboard să reîncarce engine-ul vostru după fiecare partidă. Dacă nu este prezent se va da "new game". Puteți să-l vedeți ca pe o plasă de siguranță: dacă cumva engine-ul vostru se "strică" în timpul unei partide, el se va reseta la următoarea deci teoretic eroarea nu se va propaga. | + | |
- | <note important>Pentru fi siguri că primiți de la xboard/winboard mutările în formatul de coordonate (g1f3, care mută piesa de la g1 la f3) în momentul în care primiți "protover" de la xboard răspundeți cu "feature san=0". Dacă ați implementat mutările in formatul "piesă la câmp" (ex: Nf3, care mută calul la f3) atunci nu mai este nevoie să trimiteți acest "feature". | + | <note important>Orice mutare invalidă/regulă care nu este respectată va aduce depunctări în funcție de gravitatea și frecvența cu care ea apare.</note> |
- | "feature"-ul puteți să-l trimiteți pe tot odată: foarte mulți dintre voi ați implementat în etapa 1 să răspundeți cu "feature sigterm=0". Acum puteți trimite "feature sigterm=0 san=0"</note> | ||
- | |||
- | Mai multe detalii pentru configurarea xboard-ului din linie de comandă puteți găsi aici [[https://www.gnu.org/software/xboard/manual/xboard.html#|documentație xboard]]. | ||
- | |||
- | ==== Punctare ==== | ||
- | Punctajul de **0.5 puncte** se va acorda în felul următor: | ||
- | * **0.2 puncte** implementarea corectă a tuturor detaliilor ce țin de jocul de șah | ||
- | * **0.3 puncte** implementarea algoritmului minimax/negamax. Acest punctaj va fi și el divizat după cum urmează: | ||
- | * //0.2 puncte// implementarea unui algoritm minimax/negamax mediocru | ||
- | * //0.1 puncte// implementarea unui algoritm minimax/negamax bun | ||
- | |||
- | |||
- | Punctele se vor acorda după următoarea formulă: | ||
- | |||
- | <code> | ||
- | punctaj_etapă = 0.2 * (număr_de_partide_terminate_corect / 10) + | ||
- | 0.2 * (număr_de_partide_terminate_după_mutarea_20 / 10) + | ||
- | min(0.1, 0.1 * (număr_de_puncte_din_meci / 5))</code> | ||
- | | ||
- | Clarificări: | ||
- | * număr_de_partide_terminate_corect - număr de partide în care engine-ul vostru nu face illegal moves și termină partida. Evident că vom scădea dacă nu sunt implementate toate mișcările tuturor pieselor și așa mai departe. Adică nu veți primi punctaj dacă veți muta doar un pion și avoi veți ceda ca în etapa 1. | ||
- | * număr_de_partide_terminate_după_mutarea_20 - numărul de partide în care partida se termină după mutarea 20 (mutarea 20 înseamnă că atât albul, cât și negrul au făcut 20 de mutări) cu orice rezultat **sau** dacă partida se termină înainte de mutarea 20, dar cu victoria voastră. //Observație:// În mod normal, un minimax cât de slab cu un depth > 2 ar trebui să îi reziste lui FairyMax mai mult de 20 de mutari. | ||
- | * min(0.1, 0.1 * (număr_de_puncte_din_meci / 5)) - pe scurt, pentru a obține toate punctele la această secțiune va trebui să obțineți minim 5 puncte din cele 10 posibile în orice combinație (adică 5 victorii, sau 4 victorii și 2 remize, etc.) | ||
===== Etapa 3 ===== | ===== Etapa 3 ===== | ||
Această etapă este dedicată implementării unor algoritmi avansați pentru a crește calitatea jocului prestat de program. Punctajul pe această etapă poate fi obținut în urma unor meciuri cu boți puși la dispoziție de către noi. | Această etapă este dedicată implementării unor algoritmi avansați pentru a crește calitatea jocului prestat de program. Punctajul pe această etapă poate fi obținut în urma unor meciuri cu boți puși la dispoziție de către noi. | ||
- | Recomandăm implementarea algoritmului alpha-beta și a cel putin două tehnici avansate/euristici pentru a putea calcula cât mai multe mutări în față. Administrarea timpului rămas este o componentă foarte importantă acestei etape. | + | Recomandăm implementarea algoritmului alpha-beta și a cel putin două tehnici avansate/euristici pentru a putea calcula cât mai multe mutări în față. Administrarea timpului rămas este o componentă foarte importantă acestei etape. Nu uitați că botul submis de voi pentru această etapă va fi luat în considerare și pentru concursul din Etapa 4. |
- | Detalii despre boții puși la dispoziție, regulile de punctare și formatul meciurilor vor fi anunțate ulterior. | ||
Această etapă va avea **4 săptămâni**. Punctajul alocat acestei etape este de **0.5 puncte**. | Această etapă va avea **4 săptămâni**. Punctajul alocat acestei etape este de **0.5 puncte**. | ||
- | Deadline-ul acestei etape este **19 mai 2020, ora 23:55**. | + | Deadline-ul acestei etape este **26 mai 2021, ora 23:55**. |
==== Testare ==== | ==== Testare ==== | ||
- | Pentru testare ne vom folosi de engine-ul FairyMax care vine preinstalat cu xboard/winboard. În funcție de caz, acesta va fi limitat ori la depth=3 ori la depth=4. Acest lucru îl va face să joace mai bine decât la etapa precedentă. | + | Pentru testare ne vom folosi de engine-ul Pulsar disponibil [[http://www.lanternchess.com/pulsar/|aici]]. El este disponibil într-o arhivă zip și pentru a putea testa cu comenzile de mai jos este recomandat să adăugați folderul de dezarhivare în PATH. În funcție de caz, acesta va fi limitat ori la depth=2, ori la depth=3, ori la depth=4. Acest lucru îl va face să joace progresiv mai bine. |
- | Comenzile care vor fi rulate pentru testare vor arăta (foarte) asemănător cu comenzile de mai jos. Diferența constantă în string-ul de inițializare pentru FairyMax (depth 3 vs depth 4): | + | Testarea se va face automat într-o mașină virtuală linux cu 1 singur procesor. Comenzile care vor fi rulate pentru testare vor arăta (foarte) asemănător cu comenzile de mai jos. Iar prin "foarte asemănător" înțelegem că această comandă va fi dată xboardului să pornească jocul cu engine-ul vostru, dar mai pot diferi numele fișierului în care se salvează partidele și/sau va fi pusă într-un script. |
- | <note important>xboard -fcp "make run" -scp "fairymax" -secondInitString "new\nrandom\nsd 3\n" -tc 5 -inc 2 -autoCallFlag true -mg 4 -sgf partide.txt -reuseFirst false</note> | + | Diferența între acestea constantă în string-ul de inițializare pentru Pulsar (depth 2 vs depth 3 vs depth 4): |
- | <note important>xboard -fcp "make run" -scp "fairymax" -secondInitString "new\nrandom\nsd 4\n" -tc 5 -inc 2 -autoCallFlag true -mg 4 -sgf partide.txt -reuseFirst false</note> | + | <note important>xboard -variant 3check -fcp "pulsar2009-9b-64 mxT-2" -tc 5 -inc 2 -autoCallFlag true -mg 4 -sgf partide.txt -reuseFirst false</note> |
- | + | <note important>xboard -variant 3check -fcp "pulsar2009-9b-64 mxT-3" -tc 5 -inc 2 -autoCallFlag true -mg 4 -sgf partide.txt -reuseFirst false</note> | |
- | Pentru detalii legate de parametrii comenzilor analizați instrucțiunile de la etapa precedentă. | + | <note important>xboard -variant 3check -fcp "pulsar2009-9b-64 mxT-4" -tc 5 -inc 2 -autoCallFlag true -mg 4 -sgf partide.txt -reuseFirst false</note> |
+ | Explicarea parametrilor: | ||
+ | * **xboard** - aplicația pe care o folosim :-D poate fi atât xboard cât și winboard, dar checkerul va rula pe linux deci vom folosi xboard. | ||
+ | * **-fcp "make run"** - setează primul engine ca fiind engine-ul vostru. Vă reamintim că "make run" ar trebui doar să vă pornească engine-ul, nu și xboard-ul. | ||
+ | * **-scp "pulsar2009-9b-64 mxT-Numar"** - setează al doilea engine ca fiind engine-ul Pulsar cu depth-ul Numar. Reamintim că pentru testări locale calea până la executabilul de pulsar trebuie adăugată în PATH. | ||
+ | * **-tc 5 -inc 2** - setează timpul de joc la 5 minute (timpul de start pentru fiecare jucător), iar la fiecare mutare jucătorul care a efectuat-o va primi încă 2 secunde. //Observație:// Este indicată gestionarea timpului (dar nu obligatoriu). Acest timp, împreună cu următorul parametru(-autoCallFlag true) previne situația în care voi ați da un depth prea mare engine-ului vostru și acesta ar sta foarte mult să se gândească și situația în care engine-ul vostru intră într-o buclă infinită și nu mai mută. | ||
+ | * **-autoCallFlag true** - setează xboard-ul ca atunci când i se termină timpul unuia din jucători să atribuie victoria celuilalt. | ||
+ | * **-mg 4** - numărul de partide jucate va fi 4 pentru teste. Automat se vor juca 2 cu albul și 2 cu negru. Voi puteți modifica parametrul sau chiar să îl scoateți pentru teste mai mici. | ||
+ | * **-sgf partide.txt** - în acest fișier se vor salva partidele jucate. | ||
+ | * **-reuseFirst false** - acest parametru îi specifică lui xboard să reîncarce engine-ul vostru după fiecare partidă. Dacă nu este prezent se va da "new game". Puteți să-l vedeți ca pe o plasă de siguranță: dacă cumva engine-ul vostru se "strică" în timpul unei partide, el se va reseta la următoarea deci teoretic eroarea nu se va propaga. | ||
==== Punctare ==== | ==== Punctare ==== | ||
Punctajul de **0.5 puncte** se va acorda în felul următor: | Punctajul de **0.5 puncte** se va acorda în felul următor: | ||
- | * **0.35 puncte** obținerea a 2 puncte (orice combinație de remize + victorii) din 4 partide vs FairyMax cu depth-ul 3 | + | * **0.2 puncte** obținerea a 2 puncte (orice combinație de remize + victorii) din 4 partide vs Pulsar cu depth-ul 2 |
- | * **0.15 puncte** obținerea a 2 puncte (orice combinație de remize + victorii) din 4 partide vs FairyMax cu depth-ul 4 | + | * **0.2 puncte** obținerea a 2 puncte (orice combinație de remize + victorii) din 4 partide vs Pulsar cu depth-ul 3 |
+ | * **0.1 puncte** obținerea a 2 puncte (orice combinație de remize + victorii) din 4 partide vs Pulsar cu depth-ul 4 | ||
Punctele se vor acorda după următoarea formulă: | Punctele se vor acorda după următoarea formulă: | ||
<code> | <code> | ||
- | punctaj_etapă = min(0.35, 0.35 * (număr_puncte_din_meci_vs_fm3 / 2)) + | + | punctaj_etapă = min(0.2, 0.2 * (număr_puncte_din_meci_vs_pulsar2 / 2)) + |
- | min(0.15, 0.15 * (număr_puncte_din_meci_vs_fm4 / 2))</code> | + | min(0.2, 0.2 * (număr_puncte_din_meci_vs_pulsar3 / 2)) + |
+ | min(0.1, 0.1 * (număr_puncte_din_meci_vs_pulsar4 / 2))</code> | ||
===== Etapa 4 ===== | ===== Etapa 4 ===== | ||
Line 192: | Line 190: | ||
Winboard/Xboard a devenit un program standard de interfațare între diferitele motoare existente în momentul de față. Fiecare motor minimalist existent știe să lucreze cu acest program. Ușurarea lucrului de mediere a unui joc justifică implementarea sa, precum și faptul că proiectul realizat va putea juca cu orice alt motor cât de cât performant de pe net. Cât despre timpul pierdut, interfațarea minimalistă cerută in etapa 1 se poate realiza în aproximativ o oră. La ce chestii vor fi de implementat la protocoale de comunicații, asta vi se va părea floare la ureche :-). | Winboard/Xboard a devenit un program standard de interfațare între diferitele motoare existente în momentul de față. Fiecare motor minimalist existent știe să lucreze cu acest program. Ușurarea lucrului de mediere a unui joc justifică implementarea sa, precum și faptul că proiectul realizat va putea juca cu orice alt motor cât de cât performant de pe net. Cât despre timpul pierdut, interfațarea minimalistă cerută in etapa 1 se poate realiza în aproximativ o oră. La ce chestii vor fi de implementat la protocoale de comunicații, asta vi se va părea floare la ureche :-). | ||
===Nu exista deja o droaie de algoritmi pe net despre sah? Dar proiectele din anii precedenți?=== | ===Nu exista deja o droaie de algoritmi pe net despre sah? Dar proiectele din anii precedenți?=== | ||
- | Da, exista multe surse de documentație pe net despre cum să implementezi un joc de șah. Dar de la vorbe la fapte e cale lungă. Doar pentru că există mulți algoritmi nu inseamnă că oricine va ști să-i implementeze și să o facă și bine. Implementarea corectă și eficientă presupune mai mult decât copy paste de pe net. Cât despre proiectele de anii trecuți, ele există in posesia echipei de PA, și cele de anul acesta vor fi verificate contra celor precedente pentru a nu avea cazuri de fraudă. De asemenea, codul fiecarui proiect va fi făcut public inainte de etapa 4 pentru a putea fi inspectat de fiecare echipă ce dorește să se asigure ca nu a fost comis vreun act de fraudă din partea concurenței. Dacă se constată o tentativă de fraudă din partea oricărei echipe, toți membrii echipei vor avea restanță la Proiectarea Algoritmilor și vor pierde punctajul aferent proiectului. | + | Da, exista multe surse de documentație pe net despre cum să implementezi un joc de șah. Dar de la vorbe la fapte e cale lungă. Doar pentru că există mulți algoritmi nu inseamnă că oricine va ști să-i implementeze și să o facă și bine. Implementarea corectă și eficientă presupune mai mult decât copy paste de pe net. Cât despre proiectele de anii trecuți, ele există in posesia echipei de PA, și cele de anul acesta vor fi verificate contra celor precedente pentru a nu avea cazuri de fraudă. De asemenea, tipul de șah "3 checks" este diferit de șahul normal astfel că un engine care joacă șah normal va pierde destul de sigur împotriva unuia specializat. Dacă se constată o tentativă de fraudă din partea oricărei echipe, toți membrii echipei vor avea restanță la Proiectarea Algoritmilor și vor pierde punctajul aferent proiectului. |
===Cum imi aleg coechipierii?=== | ===Cum imi aleg coechipierii?=== | ||
Cum vrei, pe baza oricăror criterii crezi tu că sunt importante. | Cum vrei, pe baza oricăror criterii crezi tu că sunt importante. |