This shows you the differences between two versions of the page.
pp:21:teme:target-search [2021/04/15 00:53] 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ă]] | * [[https://curs.upb.ro/mod/forum/view.php?id=267787|Forum temă]] | ||
* vmchecker (în curând) | * vmchecker (în curând) | ||
Line 85: | 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 117: | 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 123: | 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**//. | * 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. | ||
Line 153: | 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. | ||