This shows you the differences between two versions of the page.
pp:21:teme:target-search [2021/04/14 23:08] 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 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. | ||