Unelte utilizator

Unelte site


16:teme:prolog-transmission
Diferențe

Aici sunt prezentate diferențele dintre versiunile selectate și versiunea curentă a paginii.

Link către această vizualizare comparativă

Both sides previous revision Versiuni anterioare
Urmatoarea versiune
Versiuni anterioare
16:teme:prolog-transmission [2016/05/13 02:05]
Andrei Olaru [Prolog: Transmission]
16:teme:prolog-transmission [2016/05/22 15:56] (curent)
Andrei Olaru [Changelog]
Linia 2: Linia 2:
  
 * Responsabil:​ [[cs@andreiolaru.ro|Andrei Olaru]] * Responsabil:​ [[cs@andreiolaru.ro|Andrei Olaru]]
-* Deadline soft: **20.05.2016**, apoi depunctare 0.5p/ zi +* Deadline soft: **23.05.2016**, apoi depunctare 0.5p/ zi 
 * Deadline hard: __24.05.2016 ora 23.59__ * Deadline hard: __24.05.2016 ora 23.59__
 * Data publicării:​ 10.05.2016 * Data publicării:​ 10.05.2016
 * Data ultimei modificări:​ 10.05.2016 * Data ultimei modificări:​ 10.05.2016
-* Tema se va încărca pe **[[https://​elf.cs.pub.ro/​vmchecker/​ui/#​PP|vmchecker]]** ​(în curând) +* Tema se va încărca pe **[[https://​elf.cs.pub.ro/​vmchecker/​ui/#​PP|vmchecker]]** 
-* Data tester-ului:​ 13.05.2016+* Data tester-ului: ​22.05.2016 | 13.05.2016 ​(teste)
 * [[http://​cs.curs.pub.ro/​2015/​mod/​forum/​view.php?​id=5851|Forum temă]] * [[http://​cs.curs.pub.ro/​2015/​mod/​forum/​view.php?​id=5851|Forum temă]]
  
  
 == Changelog == == Changelog ==
-  * 13.05.2016: Adăugat tester și încă un test.+  ​* 22.05.2016:​ 
 +    * corecție testare cu antene de emisie -- unele soluții puteau fi refuzate pentru că un nod primea prea multă informație,​ însumată de la o antenă și din alte surse (mulțumesc Andrei-Bogdan Stănescu);​ 
 +    * implementare switch ''​amFacutBonus''​ pentru a nu rula testele pentru bonus dacă predicatul ''​amFacutBonus''​ nu întoarce adevărat (mulțumesc Igor Parvan); 
 +    * corecție însumare punctaje -- suma afișată (dar nu cea considerată de vmchecker) considera și punctaje pentru testele care ies din timp (mulțumesc Mihaela-Elena Beboeanu). 
 +  * 21.05.2016: mențiune legături uni-sens în descrierea legăturilor (mențiune deja existentă în secțiunea scopul jocului) (mulțumesc Georgian Tănase). 
 +  * 18.05.2016: ajustare formatare tester; vmchecker activ. 
 +  * 17.05.2016: adăugat comentarii în tester și afișare punctaje. Reparat numele unei structuri din testul 4-2 (mulțumesc Andrei-Bogdan Stănescu). 
 +  ​* 13.05.2016: Adăugat tester și încă un test (3-7).
  
  
Linia 28: Linia 35:
 === Jocul Transmission === === Jocul Transmission ===
  
-Jocul Transmission cere jucătorului soluționarea unor probleme de "​transmitere a informației"​. Date fiind mai multe elemente de joc (surse de informație -- "​Transmitter",​ receptoare de informație -- "​Receiver",​ relee de informație -- "​Transceiver",​ etc), așezate într-un spațiu bi-dimensional,​ jucătorul trebuie să realizeze legături ​într aceste elemente astfel încât informația (reprezentată în joc în forma unor cuburi mici) să "​circule"​ între elemente în așa fel încât toate elementele ce trebuie să primească informație să o facă, în cantitățile necesare.+Jocul Transmission cere jucătorului soluționarea unor probleme de "​transmitere a informației"​. Date fiind mai multe elemente de joc (surse de informație -- "​Transmitter",​ receptoare de informație -- "​Receiver",​ relee de informație -- "​Transceiver",​ etc), așezate într-un spațiu bi-dimensional,​ jucătorul trebuie să realizeze legături ​între ​aceste elemente astfel încât informația (reprezentată în joc în forma unor cuburi mici) să "​circule"​ între elemente în așa fel încât toate elementele ce trebuie să primească informație să o facă, în cantitățile necesare.
  
 **Notă:** jocul Transmission nu folosește în mod corect ideile de informație,​ propagare a informației,​ etc, de exemplu într-o rețea de calculatoare. Mai departe vom folosi conceptele din joc așa cum sunt ele considerate în joc, nu așa cum sunt în realitate. **Notă:** jocul Transmission nu folosește în mod corect ideile de informație,​ propagare a informației,​ etc, de exemplu într-o rețea de calculatoare. Mai departe vom folosi conceptele din joc așa cum sunt ele considerate în joc, nu așa cum sunt în realitate.
Linia 40: Linia 47:
 O legătură este permisă dacă: O legătură este permisă dacă:
   * este realizată între noduri diferite;   * este realizată între noduri diferite;
 +  * nu există deja o legătură între aceleași noduri și în sens invers;
   * nu trece, geometric, printr-un alt nod (de exemplu, dacă avem 3 noduri coliniare A, B și C, dispuse în această ordine, nu se poate realiza o legătură directă între A și C, pentru că este B este între cele două noduri și coliniar cu acestea);   * nu trece, geometric, printr-un alt nod (de exemplu, dacă avem 3 noduri coliniare A, B și C, dispuse în această ordine, nu se poate realiza o legătură directă între A și C, pentru că este B este între cele două noduri și coliniar cu acestea);
   * nodul sursă conține unități de informație (cubulețe în afara nodului);   * nodul sursă conține unități de informație (cubulețe în afara nodului);
Linia 54: Linia 62:
   * (Pentru bonus) O **antenă de emisie** primește informație dintr-una sau mai multe surse, și transmite această informație tuturor nodurilor din raza sa.   * (Pentru bonus) O **antenă de emisie** primește informație dintr-una sau mai multe surse, și transmite această informație tuturor nodurilor din raza sa.
     * Dacă o antenă primește //n// unități de informație,​ toate nodurile din raza sa cu lățime disponibilă vor primi câte //n// unități de informație,​ în limita lățimii disponibile. ​     * Dacă o antenă primește //n// unități de informație,​ toate nodurile din raza sa cu lățime disponibilă vor primi câte //n// unități de informație,​ în limita lățimii disponibile. ​
-    * Un nod care primește informație de la antenă **nu** poate transmite în mod direct informație înapoi antenei. +    * Un nod care primește informație de la antenă **nu** poate transmite în mod direct informație înapoi antenei. De exemplu, dacă un nod dă unei antene un cub de informație,​ și se află în raza antenei, nu va primi cubul de informație înapoi de la antenă, și nici nu va primi alte informații de la antenă, chiar dacă acestea vin către antenă din alte noduri
-    * O antenă poate emită oricâtă informație primește (are lățime nelimitată).+    * O antenă poate să emită oricâtă informație primește (are lățime nelimitată).
  
  
Linia 107: Linia 115:
 == Cerințe == == Cerințe ==
  
-=== Interpretarea intrării ===+=== Interpretarea intrării ​(25p) ===
  
 Prelucrarea intrării se va face prin predicatul<​code>​ Prelucrarea intrării se va face prin predicatul<​code>​
Linia 132: Linia 140:
  
 care va afișa la consolă descrierea unei probleme de rezolvat, într-un format la alegere (e.g. ce proprietăți are fiecare nod). care va afișa la consolă descrierea unei probleme de rezolvat, într-un format la alegere (e.g. ce proprietăți are fiecare nod).
-=== Generarea unei soluții corecte ===+ 
 +Punctajul pentru prima cerință va fi dat astfel: 
 +  * pentru ''​parse''​ (20p): 
 +    * în mod implicit, punctajul va fi calculat ca proporțional cu punctajul la testele fără bonus(testele de la 11 până la 37): dacă pe teste se primesc f*75 de puncte (cu f din [0, 1]), ''​parse''​ va primi f*20 de puncte. 
 +    * altfel (în cazul în care nu trec toate testele), dacă ''​parse''​ prelucrează integral intrarea (rezultatul produs nu păstrează structura argumentului ''​Raw''​),​ în urma prezentării se vor acorda pentru ''​parse''​ 20 de puncte. 
 +  * pentru ''​describe''​ se acordă 5 puncte în urma prezentării temei. 
 + 
 + 
 +=== Generarea unei soluții corecte ​(75p) ===
  
 Se cere rezolvarea unei probleme de tipul celor prezentate. Implementarea rezolvării se va face în predicatul <​code>​ Se cere rezolvarea unei probleme de tipul celor prezentate. Implementarea rezolvării se va face în predicatul <​code>​
Linia 141: Linia 157:
  
 Punctajul va fi dat depinzând de testele care pot fi rezolvate de temă. Dificultatea testelor este crescătoare. Punctajul va fi dat depinzând de testele care pot fi rezolvate de temă. Dificultatea testelor este crescătoare.
-=== Bonus: soluție pentru problemele ce conțin antene de emisie ===+=== Bonus: soluție pentru problemele ce conțin antene de emisie ​(20p) ===
  
-Cei care implementează bonusul trebuie să aibă în temă un predicat ''​AmFacutBonus''​ care să întoarcă adevărat (este comentat în sursa dată).+Cei care implementează bonusul trebuie să aibă în temă un predicat ''​amFacutBonus''​ care să întoarcă adevărat (este comentat în sursa dată).
  
 În testele pentru bonus, lista ''​Raw''​ dată lui ''​parse''​ mai conține o structură ''​antennas(L)'',​ în care lista ''​L''​ conține câte o listă pentru fiecare antenă din problemă. Fiecare listă corespunzătoare unei antene are pe prima poziție nodul în care este antena iar restul listei este formată din nodurile care sunt în raza de emisie a antenei. În testele pentru bonus, lista ''​Raw''​ dată lui ''​parse''​ mai conține o structură ''​antennas(L)'',​ în care lista ''​L''​ conține câte o listă pentru fiecare antenă din problemă. Fiecare listă corespunzătoare unei antene are pe prima poziție nodul în care este antena iar restul listei este formată din nodurile care sunt în raza de emisie a antenei.
Linia 154: Linia 170:
 Se va lucra numai în fișierul ''​transmission.pl''​. Se va lucra numai în fișierul ''​transmission.pl''​.
  
 +
 +== Testarea temei ==
 +
 +Pentru a vă testa tema, folosiți predicatele:​
 +  * ''​ttestAll''​ -- rulează toate testele, este predicatul folosit pe vmchecker.
 +  * ''​ttestOne(+TestID)''​ -- rulează testul identificat de TestID.
 +    * testele pot fi identificate în fișierul de testare ca fiind întoarse de predicatul ''​tt(+TestID,​ -Raw)''​.
 +  * ''​ttestOneA(+TestID)''​ -- rulează testul identificat , fără limită de timp.
 +
 +Testele sunt detaliate în fișierul de testare în regulile predicatului ''​tt''​. Înainte de regula pentru fiecare test, este dat și reprezentarea vizuală a testului, folosind simbolurile ''​+''​ pentru o unitate de lățime a unei surse, ''​-''​ pentru o unitate de lățime a unui receptor, ''​=''​ pentru o unitate de lățime a unui transmițător,​ și ''​*''​ pentru o antenă.
 == Disclaimer == == Disclaimer ==
  
16/teme/prolog-transmission.1463094320.txt.gz · Ultima modificare: 2016/05/13 02:05 de către Andrei Olaru