This shows you the differences between two versions of the page.
programare:teme_2020:tema2_2020_cbd [2020/12/01 20:51] alexandru.mindru [Tema 2. A Game of Scrabble] |
programare:teme_2020:tema2_2020_cbd [2020/12/14 11:46] (current) george.muraru [Tema 2. A Game of Scrabble] |
||
---|---|---|---|
Line 8: | Line 8: | ||
* Data publicării: **30.11.2020** | * Data publicării: **30.11.2020** | ||
- | * Deadline soft: **14.12.2020** | + | * Deadline soft: **20.12.2020** |
- | * Deadline hard: **14.12.2020** | + | * Deadline hard: **20.12.2020** |
/* | /* | ||
<note important> | <note important> | ||
- | ****Atentie!** deadline-ul soft coincide cu cel hard! Prin urmare, nu se vor mai accepta submisii dupa data de 13.01.2020!** | + | ****Atentie!** deadline-ul soft coincide cu cel hard! Prin urmare, nu se vor mai accepta submisii dupa data de 20.12.2020!** |
</note> | </note> | ||
*/ | */ | ||
Line 20: | Line 20: | ||
* **30.11.2020**: modificat arhiva astfel incat tema sa poata fi compilata si pe OSX (MacOS); | * **30.11.2020**: modificat arhiva astfel incat tema sa poata fi compilata si pe OSX (MacOS); | ||
* **1.12.2020**: reparat testele pt task-urile 5 si bonus; | * **1.12.2020**: reparat testele pt task-urile 5 si bonus; | ||
+ | * **7.12.2020**: reparat testele pt task-urile 5 si bonus v2; | ||
+ | * **14.12.2020**: adaugat flag "-lm" in Makefile | ||
Line 46: | Line 48: | ||
* 0 - niciun bonus | * 0 - niciun bonus | ||
* 1 - punctajul se dubleaza daca pe patratica respectiva se afla o litera apartinand unui cuvant care are substringul “XX” in compozitie, se da substringul la fiecare joc | * 1 - punctajul se dubleaza daca pe patratica respectiva se afla o litera apartinand unui cuvant care are substringul “XX” in compozitie, se da substringul la fiecare joc | ||
- | * 2 - punctajul se tripleaza daca pe patratica respectiva se afla o litera apartinand unui cuvant care se termina cu substringul “XX”, se da substringul la fiecare joc | + | * 2 - punctajul se tripleaza daca pe patratica respectiva se afla o litera apartinand unui cuvant care se termina cu substringul “YY”, se da substringul la fiecare joc |
Modul in care se calculeaza punctajul va fi detaliat ulterior in cerintele temei. Matricea arata in felul urmator: | Modul in care se calculeaza punctajul va fi detaliat ulterior in cerintele temei. Matricea arata in felul urmator: | ||
Line 218: | Line 220: | ||
* Face parte din lista de cuvinte (vectorul words din fisierul scrabble.h) | * Face parte din lista de cuvinte (vectorul words din fisierul scrabble.h) | ||
* Cuvantul nu e deja pus pe tabla de niciunul dintre jucatori | * Cuvantul nu e deja pus pe tabla de niciunul dintre jucatori | ||
- | * Prima litera din cuvant se afla deja pe tabla si cuvantul poate fi pus in continuarea literei respective, fie pe orizontala, fie pe verticala. (Pentru a verifica acest lucru, se cauta pe tabla prima litera din cuvant de la coltul stanga sus, linie cu linie, pana la coltul dreapta jos al tablei de joc). | + | * Prima litera din cuvant se afla deja pe tabla si cuvantul poate fi pus in continuarea literei respective, fie pe orizontala, fie pe verticala.** (Pentru a verifica acest lucru, se cauta pe tabla prima litera din cuvant de la coltul stanga sus, linie cu linie, pana la coltul dreapta jos al tablei de joc.).** |
* Cuvantul nu iese din marginile tablei de joc si nu se suprapune cu alte cuvinte (inafara de prima litera) | * Cuvantul nu iese din marginile tablei de joc si nu se suprapune cu alte cuvinte (inafara de prima litera) | ||
Line 255: | Line 257: | ||
==== Cerinta 5: (30 Puncte) - 10 teste ==== | ==== Cerinta 5: (30 Puncte) - 10 teste ==== | ||
- | Pentru aceasta cerinta va trebui sa faceti acelasi lucru ca si la task-ul precedent, dar de aceasta data veti alege cuvantul din lista de cuvinte care va aduce castigul (sau remiza) pentru Player 2. La calcularea scorurilor se va tine cont de bonus. Cuvantul selectat trebuie sa incapa pe tabla de joc si sa nu se repete. Daca gasiti un astfel de cuvant atunci la output se va afisa tabla de joc care va contine si cuvantul respectiv, in caz contrar se va afisa mesajul “FAIL!”. | + | Pentru aceasta cerinta va trebui sa faceti acelasi lucru ca si la task-ul precedent, dar de aceasta data veti alege cuvantul din lista de cuvinte care va aduce castigul (sau remiza) pentru Player 2. La calcularea scorurilor se va tine cont de bonus. Cuvantul selectat trebuie sa incapa pe tabla de joc si sa nu se repete. Daca gasiti un astfel de cuvant atunci la output se va afisa tabla de joc care va contine si cuvantul respectiv, in caz contrar se va afisa mesajul “Fail!”. |
Pasi in rezolvarea task-ului: | Pasi in rezolvarea task-ului: | ||
Line 262: | Line 264: | ||
* Se cauta cuvantul optim pe care Player 2 poate sa il joace (acel cuvant care adunat la scorul pe care Player 2 il are deja va produce in scor mai mare *sau* egal cu scorul Player-ului 1) | * Se cauta cuvantul optim pe care Player 2 poate sa il joace (acel cuvant care adunat la scorul pe care Player 2 il are deja va produce in scor mai mare *sau* egal cu scorul Player-ului 1) | ||
* Daca se gaseste cuvantul va fi afisata tabla ce va contine noul cuvantul. | * Daca se gaseste cuvantul va fi afisata tabla ce va contine noul cuvantul. | ||
- | * Daca nu se gaseste cuvantul va fi afisat mesajul “FAIL!”. | + | * Daca nu se gaseste cuvantul va fi afisat mesajul “Fail!”. |
Un cuvant este optim pentru Player 2 daca: | Un cuvant este optim pentru Player 2 daca: | ||
* Face parte din lista de cuvinte (vectorul words din fisierul scrabble.h) | * Face parte din lista de cuvinte (vectorul words din fisierul scrabble.h) | ||
* Cuvantul nu e deja pus pe tabla de niciunul dintre jucatori | * Cuvantul nu e deja pus pe tabla de niciunul dintre jucatori | ||
- | * Prima litera din cuvant se afla deja pe tabla si cuvantul poate fi pus in continuarea literei respective, fie pe orizontala, fie pe verticala. (Pentru a verifica acest lucru, se cauta pe tabla prima litera din cuvant de la coltul stanga sus, linie cu linie, pana la coltul dreapta jos al tablei de joc). | + | * Prima litera din cuvant se afla deja pe tabla si cuvantul poate fi pus in continuarea literei respective, fie pe orizontala, fie pe verticala. **(Pentru a verifica acest lucru, se cauta pe tabla prima litera din cuvant de la coltul stanga sus, linie cu linie, pana la coltul dreapta jos al tablei de joc. Daca un cuvant poate fi pus in mai multe locuri, se alege pozitia cu linia cea mai mic, daca liniile sunt egale, se alege cea care are cea mai mica coloana. Daca un cuvant poate fi pus si pe orizontala si pe verticala, cuvantul va fi pus pe orizontala.).** |
* Cuvantul nu iese din marginile tablei de joc si nu se suprapune cu alte cuvinte (inafara de prima litera) | * Cuvantul nu iese din marginile tablei de joc si nu se suprapune cu alte cuvinte (inafara de prima litera) | ||
* Produce **cel mai mare scor posibil** incluzand bonusurile | * Produce **cel mai mare scor posibil** incluzand bonusurile | ||
+ | |||
+ | <note important>Spre deosebire de task-ul 4, cuvantul optim nu trebuie sa fie neaparat primul cuvant gasit in lista.</note> | ||
Inputul va fi de forma urmatoare: | Inputul va fi de forma urmatoare: | ||
Line 329: | Line 333: | ||
* Face parte din lista de cuvinte (vectorul words din fisierul scrabble.h) | * Face parte din lista de cuvinte (vectorul words din fisierul scrabble.h) | ||
* Cuvantul nu e deja pus pe tabla de niciunul dintre jucatori | * Cuvantul nu e deja pus pe tabla de niciunul dintre jucatori | ||
- | * Prima litera din cuvant se afla deja pe tabla si cuvantul poate fi pus in continuarea literei respective, fie pe orizontala, fie pe verticala. (Pentru a verifica acest lucru, se cauta pe tabla prima litera din cuvant de la coltul stanga sus, linie cu linie, pana la coltul dreapta jos al tablei de joc). | + | * Prima litera din cuvant se afla deja pe tabla si cuvantul poate fi pus in continuarea literei respective, fie pe orizontala, fie pe verticala. **(Pentru a verifica acest lucru, se cauta pe tabla prima litera din cuvant de la coltul stanga sus, linie cu linie, pana la coltul dreapta jos al tablei de joc. Daca un cuvant poate fi pus in mai multe locuri, se alege pozitia cu linia cea mai mic, daca liniile sunt egale, se alege cea care are cea mai mica coloana. Daca un cuvant poate fi pus si pe orizontala si pe verticala, cuvantul va fi pus pe orizontala.).** |
* Cuvantul nu iese din marginile tablei de joc si nu se suprapune cu alte cuvinte (inafara de prima litera) | * Cuvantul nu iese din marginile tablei de joc si nu se suprapune cu alte cuvinte (inafara de prima litera) | ||
* Produce cel mai mare scor posibil incluzand bonusurile | * Produce cel mai mare scor posibil incluzand bonusurile | ||
+ | |||
+ | <note important>Spre deosebire de task-ul 4, cuvantul optim nu trebuie sa fie neaparat primul cuvant gasit in lista.</note> | ||
Inputul va fi de forma urmatoare: | Inputul va fi de forma urmatoare: | ||
Line 352: | Line 358: | ||
Tema va fi trimisa folosind [[https://v2.vmchecker.grid.pub.ro/homepage/|v2.vmchecker]], cursul **Programarea Calculatoarelor**, tema **A Game of Scrabble**. | Tema va fi trimisa folosind [[https://v2.vmchecker.grid.pub.ro/homepage/|v2.vmchecker]], cursul **Programarea Calculatoarelor**, tema **A Game of Scrabble**. | ||
- | Găsiți arhiva cu checker-ul si makefile-ul {{:programare:teme_2020:pc_tema_2.zip|aici}}. | + | Găsiți arhiva cu checker-ul si makefile-ul {{:programare:teme_2020:pc_tema_21.zip|aici}}. |
<note warning>Fisierul .c se va numi scrabble.c</note> | <note warning>Fisierul .c se va numi scrabble.c</note> |