Aici sunt prezentate diferențele dintre versiunile selectate și versiunea curentă a paginii.
Both sides previous revision Versiuni anterioare Urmatoarea versiune | Versiuni anterioare | ||
20:teme:haskell-roll-the-ball [2020/04/16 17:23] Vlad Neculae [Changelog] |
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: 14.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. \\ |