Unelte utilizator

Unelte site


20:teme:haskell-roll-the-ball
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
20:teme:haskell-roll-the-ball [2020/04/16 17:23]
Vlad Neculae [Haskell: Roll the Ball]
20:teme:haskell-roll-the-ball [2020/05/02 12:07] (curent)
Mihnea Muraru [Changelog]
Linia 11: Linia 11:
 * Deadline hard: __03.05.2020__ * Deadline hard: __03.05.2020__
 * Data publicării:​ 10.04.2020 * Data publicării:​ 10.04.2020
-* Data ultimei modificări: ​16.04.2020 [[#​changelog|changelog]]+* Data ultimei modificări: ​30.04.2020 [[#​changelog|changelog]]
 * Tema se va încărca pe **[[https://​vmchecker.cs.pub.ro/​ui/#​PP|vmchecker]]** * Tema se va încărca pe **[[https://​vmchecker.cs.pub.ro/​ui/#​PP|vmchecker]]**
 * Data checker-ului:​ 10.04.2020 * Data checker-ului:​ 10.04.2020
Linia 22: Linia 22:
  
 == Dependențe == == Dependențe ==
-Pentru a rula checker-ul, este necasară instalarea unor dependințe adiționale. Putem face asta urmând următorii pași:+Pentru a rula checker-ul, este necasară instalarea unor dependențe adiționale. Putem face asta urmând următorii pași:
  
-  - Adăugăm psqueues la dependințele lui stack, modificând linia extra-deps din fișierul stack.yaml ​ astfel: ''​extra-deps:​ [random-1.1,​ psqueues-0.2.7.2]''​+  - Adăugăm psqueues la dependențele lui stack, modificând linia extra-deps din fișierul stack.yaml ​ astfel: ''​extra-deps:​ [random-1.1,​ psqueues-0.2.7.2]''​
   - Rulăm ''​stack install unordered-containers''​ si ''​stack install astar''​ pentru a instala pachetele necesare.   - Rulăm ''​stack install unordered-containers''​ si ''​stack install astar''​ pentru a instala pachetele necesare.
  
Linia 47: Linia 47:
 === Spațiul stărilor problemei === === Spațiul stărilor problemei ===
  
-Căutarea soluției se va desfășura în **spațiul stărilor** problemei. Acesta este reprezentat de un graf, în care nodurile sunt **configurațiile** tablei de joc, iar muchiile, **acțiunile** care asigură tranzițiile între stări. Mai jos, este prezentat spațiul stărilor pentru nivelul de mai sus. O acțiune este reprezentată printr-o pereche (celulă, direcție), ​unde o celulă ​este indicată printr-o pereche ​(linie, coloană), începând cu (0, 0) în stânga-sus.+Căutarea soluției se va desfășura în **spațiul stărilor** problemei. Acesta este reprezentat de un graf, în care nodurile sunt **configurațiile** tablei de joc, iar muchiile, **acțiunile** care asigură tranzițiile între stări. Mai jos, este prezentat spațiul stărilor pentru nivelul de mai sus. O acțiune este reprezentată printr-o pereche (poziție, direcție), ​reprezentând în ce "​direcție"​ s-a deplasat celula de la poziția "​poziție"​. O poziție ​este reprezentată astfel: ​(linie, coloană), începând cu (0, 0) - colțul din stânga-sus.
  
 {{ :​20:​teme:​roll-the-ball-space-scaled.png |}} {{ :​20:​teme:​roll-the-ball-space-scaled.png |}}
Linia 75: Linia 75:
 |    4 | <​del>​6</​del>​ **5 <fc red>​7</​fc>​** | <​del>​8</​del>​ **9 <fc red>​7</​fc>​** | |    4 | <​del>​6</​del>​ **5 <fc red>​7</​fc>​** | <​del>​8</​del>​ **9 <fc red>​7</​fc>​** |
  
-Se observă că, în pasul 4, după generarea nodului 7 de către a doua parcurgere, ​aceste ​este **găsit** în frontiera primei parcurgeri, și căutarea se oprește.+Se observă că, în pasul 4, după generarea nodului 7 de către a doua parcurgere, ​acesta ​este **găsit** în frontiera primei parcurgeri, și căutarea se oprește
 + 
 +Dacă frontiera devine goală, funcția se va termina.
 == Cerințe == == Cerințe ==
  
Linia 97: Linia 99:
 === Rezolvarea jocului (65p) === === Rezolvarea jocului (65p) ===
  
-În continuare, pentru a ajunge la starea finală va trebui să reprezentăm spațiul stărilor și să îl parcurgem. În fișierul ''​ProblemState.hs''​ veți găși clasa care va interfața în mod generic funcțiile pentru generarea spațiului stărilor. În fișierul ''​RollTheBall.hs''​ veți crea o instanța a clasei **''​ProblemState''​** pentru jocul din enunț cu tipurile ''​Level''​ și ''​Direction''​. ​+În continuare, pentru a ajunge la starea finală va trebui să reprezentăm spațiul stărilor și să îl parcurgem. În fișierul ''​ProblemState.hs''​ veți găși clasa care va interfața în mod generic funcțiile pentru generarea spațiului stărilor. În fișierul ''​RollTheBall.hs''​ veți crea o instanța a clasei **''​ProblemState''​** pentru jocul din enunț cu tipurile ''​Level''​ și ''​(Position,​Directions)''​. ​
  
 Apoi, în fișierul ''​Search.hs''​ va trebui să va construiți tipul de date pentru a reprezenta arborele stărilor și să implementați funcția care va genera „tot“ spațiul (**''​createStateSpace''​**). ​ Apoi, în fișierul ''​Search.hs''​ va trebui să va construiți tipul de date pentru a reprezenta arborele stărilor și să implementați funcția care va genera „tot“ spațiul (**''​createStateSpace''​**). ​
Linia 133: Linia 135:
 == Changelog == == Changelog ==
  
 +02.05.2020 Actualizat scheletul cu tipul corect al funcției ''​connection''​ (conform 15.04), care se modificase din greșeală după schimbarea din 30.04. \\
 +30.04.2020 Eliminat testul pe level1 de la bonus, redistribuit punctajele pe restul testelor. \\
 +28.04.2020 Modificarea checkerului pentru ca functia BFS sa nu fie afecatata negativ de verificarea
 +vecinilor deja vizitati. \\
 +19.04.2020 Clarificare condiție de oprire a funcției de căutare. \\
 +18.04.2020 Clarificare instanță ProblemState și rezolvare diferențe enunț-schelet. \\
 16.04.2020 Adăugat informații adiționale despre instalatul dependențelor necesare checker-ului. \\ 16.04.2020 Adăugat informații adiționale despre instalatul dependențelor necesare checker-ului. \\
 15.04.2020 Modificarea semnăturii funcției connection din fișierul ''​RollTheBall.hs''​ din forma ''​connection :: Cell -> Cell -> Bool''​ in ''​connection :: Cell -> Cell -> Directions -> Bool''​. \\ 15.04.2020 Modificarea semnăturii funcției connection din fișierul ''​RollTheBall.hs''​ din forma ''​connection :: Cell -> Cell -> Bool''​ in ''​connection :: Cell -> Cell -> Directions -> Bool''​. \\
-14.04.2020 Precizare privind afișarea nivelului+14.04.2020 Precizare privind afișarea nivelului. \\
20/teme/haskell-roll-the-ball.1587047002.txt.gz · Ultima modificare: 2020/04/16 17:23 de către Vlad Neculae