Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pp:21:teme:target-search [2021/04/14 23:04]
bot.pp
pp:21:teme:target-search [2021/05/07 13:06] (current)
bot.pp
Line 1: Line 1:
 ====== Haskell: Mobile target search ====== ====== Haskell: Mobile target search ======
  
-  * Deadline soft: 11.05.2021+  * Deadline soft: 16.05.2021
   * Deadline hard: 16.05.2021   * Deadline hard: 16.05.2021
   * Data publicării:​ 14.04.2021   * Data publicării:​ 14.04.2021
-  * Data ultimei modificări: ​14.04.2021+  * Data ultimei modificări: ​23.04.2021 
 +  * [[https://​curs.upb.ro/​mod/​forum/​view.php?​id=267787|Forum temă]] 
 +  * vmchecker (în curând)
  
 ===== Obiective ===== ===== Obiective =====
Line 17: Line 19:
 ==== Mobile target search ==== ==== Mobile target search ====
  
-Jocul, inspirat din [[https://​en.wikipedia.org/​wiki/​Among_Us|//Among Us//]], presupune existența un vânător care urmărește mai multe ținte, scopul fiind de a le captura. Jocul se desfășoară pe un teren bidimensional,​ ca în diagrama de mai jos:+Jocul, inspirat din //[[https://​en.wikipedia.org/​wiki/​Among_Us|Among Us]]//, presupune existența un vânător care urmărește mai multe ținte, scopul fiind de a le captura. Jocul se desfășoară pe un teren bidimensional,​ ca în diagrama de mai jos:
  
 <​code>​ <​code>​
Line 83: Line 85:
 Elementele care compun jocul, regulile de mutare și afișarea, se vor implementa în fișierul ''​%%Basics.hs%%''​. Va trebui să completați propriile definiții pentru tipurile de date și funcțiile din fișier, urmărind TODO-urile. Elementele care compun jocul, regulile de mutare și afișarea, se vor implementa în fișierul ''​%%Basics.hs%%''​. Va trebui să completați propriile definiții pentru tipurile de date și funcțiile din fișier, urmărind TODO-urile.
  
-Reprezentarea stării jocului sub formă de șir de caractere, în vederea afișării la consolă și a testării, va fi realizată definind funcția ''​%%show :: Game -> String%%'',​ și va lua forma din diagramele de mai sus.+Reprezentarea stării jocului sub formă de șir de caractere, în vederea afișării la consolă și a testării, va fi realizată definind funcția ''​%%gameAsString ​:: Game -> String%%'' ​(sinonim pentru funcția predefinită ''​%%show%%''​), și va lua forma din diagramele de mai sus.
  
 Odată definite tipurile și funcțiile de mai sus, puteți citi indicațiile din secțiunea de **Rulare interactivă**,​ pentru a da comenzi de la tastatură //​hunter//​-ului. Odată definite tipurile și funcțiile de mai sus, puteți citi indicațiile din secțiunea de **Rulare interactivă**,​ pentru a da comenzi de la tastatură //​hunter//​-ului.
Line 115: Line 117:
  
 </​code>​ </​code>​
-Găsiți un tutorial de utilizare a celor două module în fișierul ''​%%DemoSetPSQueue.hs%%''​.+Găsiți un **tutorial** de utilizare a celor două module în fișierul ''​%%DemoSetPSQueue.hs%%''​.
  
 Dacă, totuși, interpretorul generează eroare din cauză că nu găsește ultimul modul, puteți edita fișierul ''​%%stack.yaml%%''​ din instalarea ''​%%stack%%''​ și adăuga linia: Dacă, totuși, interpretorul generează eroare din cauză că nu găsește ultimul modul, puteți edita fișierul ''​%%stack.yaml%%''​ din instalarea ''​%%stack%%''​ și adăuga linia:
Line 121: Line 123:
 <​code>​ <​code>​
 extra-deps: [PSQueue-1.1.0.1] extra-deps: [PSQueue-1.1.0.1]
 +
 +</​code>​
 +O alternativă ar fi opțiunea ''​%%--package%%''​. Exemplu:
 +
 +<​code>​
 +> stack exec ghci --package PSQueue TestMTS.hs
  
 </​code>​ </​code>​
 ==== Detalii și constrângeri de implementare ==== ==== Detalii și constrângeri de implementare ====
  
-  * **Atenție!** Funcțiile ''​%%show%%'',​ ''​%%successors%%'',​ ''​%%suitableSuccs%%'',​ ''​%%insertSuccs%%''​ și ''​%%extractPath%%''​ trebuie implementate **fără recursivitate explicită**. Nerespectarea acestei cerințe va conduce la **penalizări** de 2p din 100 per funcție.+  * **Atenție!** Funcțiile ''​%%gameAsString%%'',​ ''​%%successors%%'',​ ''​%%suitableSuccs%%'',​ ''​%%insertSuccs%%''​ și ''​%%extractPath%%''​ trebuie implementate **fără recursivitate explicită**. Nerespectarea acestei cerințe va conduce la **penalizări** de 2p din 100 per funcție
 +  * Utilizați, pe cât posibil, **funcționale** și //**list comprehensions**//​.
   * Exploatați cu încredere **//pattern matching// și gărzi**, în locul //​if//​-urilor imbricate.   * Exploatați cu încredere **//pattern matching// și gărzi**, în locul //​if//​-urilor imbricate.
-  * Încercați să folosiți la maxim funcții predefinite din modulul [[https://​hackage.haskell.org/​package/​base-4.15.0.0/​docs/​Data-List.html|''​%%Data.List%%''​]]. Este foarte posibil ca o funcție de **prelucrare a listelor** de care aveți nevoie să fie deja definită aici.+  * Încercați să folosiți la maxim funcții predefinite din modulul [[https://​hackage.haskell.org/​package/​base-4.15.0.0/​docs/​Data-List.html|Data.List]]. Este foarte posibil ca o funcție de **prelucrare a listelor** de care aveți nevoie să fie deja definită aici.
   * Pentru **rularea testelor**, vedeți fișierul ''​%%Readme%%''​.   * Pentru **rularea testelor**, vedeți fișierul ''​%%Readme%%''​.
   * Arhiva pentru **vmchecker** este suficient să conțină fișierele ''​%%Basics.hs%%''​ și ''​%%Search.hs%%''​.   * Arhiva pentru **vmchecker** este suficient să conțină fișierele ''​%%Basics.hs%%''​ și ''​%%Search.hs%%''​.
Line 133: Line 142:
 ==== Rulare interactivă ==== ==== Rulare interactivă ====
  
-Pentru a putea vizualiza rezultatele implementării voastre, fișierul ''​%%Interactive.hs%%''​ vă pune la dispoziție ​două funcții:+Pentru a putea vizualiza rezultatele implementării voastre, fișierul ''​%%Interactive.hs%%''​ vă pune la dispoziție ​trei funcții:
  
   * ''​%%interactive%%''​ poate fi folosită după implementarea **Părții 1** a temei, pentru a controla //​hunter//​-ul cu comenzi de la tastatură;   * ''​%%interactive%%''​ poate fi folosită după implementarea **Părții 1** a temei, pentru a controla //​hunter//​-ul cu comenzi de la tastatură;
Line 150: Line 159:
  
 ===== Changelog ===== ===== Changelog =====
 +
 +  * 23.04 (ora 15:35) - Adăugare constrângere ''​%%extractPath%%''​
 +  * 22.04 (ora 18:00) - Corectură la subtestul ''​%%advanceGame 6%%''​
 +  * 20.04 (ora 15:28) - Modificare mică pentru testarea ''​%%suitableSuccs%%''​
 +  * 16.04 (ora 10:15) - Clarificată distincția dintre funcțiile ''​%%gameAsString%%''​ și ''​%%show%%''​.
 +  * 16.04 (ora 00:12) - Mențiune rulare.
 +  * 15.04 (ora 09:22) - Actualizare schelet.
  
  
pp/21/teme/target-search.1618430683.txt.gz · Last modified: 2021/04/14 23:04 by bot.pp
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0