Corectare Tema 2
Precizări
Bonus-ul părții 1 (funcția circle) trebuie testată manual (vezi mai jos). Prin urmare, checker-ul acordă maxim 110 puncte.
Depunctări
De marcat în spreadsheet, atât pentru bonus-ul Părții 1, cât și dacă ceva este în neregulă, următoarele rubrici:
Recursivitate explicită (0–5): câte dintre funcțiile gameAsString, successors, suitableSuccs, insertSuccs și extractPath sunt implementate cu recursivitate explicită.
circle (0/0.5/1): pentru bonus-ul Părții 1, singurul aspect testat manual, treceți:
1, dacă au implementat corect funcția circle. Trebuie să vă demonstreze live că target-ul realizează o rotație completă în jurul centrului, pe o traiectorie care seamănă cât mai mult cu un cerc (nu e necesar un cerc perfect);
0.5, dacă face o rotație completă, dar traiectoria e evident diferită de un cerc (de exemplu, dreptunghi);
0, dacă nu realizează o rotație completă.
Euristică trivială (0/1): pentru bonus-ul Părții 2, treceți 1 dacă au definit o euristică trivială, de forma h(x) = 0 sau altă constantă.
Sugestii de întrebări la prezentare
Partea 1 (Basics.hs)
Cum au definit tipul Game.
Cum au implementat reprezentarea ca String (funcția gameAsString).
Dacă au avut nevoie să instanțieze vreo clasă pentru tipul Game (în afară de Show, instanțiată în schelet).
Cum a fost utilizat currying-ul pentru definirea behavior-urilor (de exemplu, la funcția bounce).
Partea 2 (Search.hs)
Cum au definit tipul Node.
Cum au instanțiat clasele Eq și Ord pentru tipul Node.
Cum au definit funcțiile de acces nodeState, nodeParent etc.
Cum au instanțiat clasa ProblemState.
Cum a fost exploatată evaluarea leneșă.
General
Unde au folosit funcționale.
Unde au folosit list comprehensions (nu era obligatoriu, dar încurajat).