Aici sunt prezentate diferențele dintre versiunile selectate și versiunea curentă a paginii.
Both sides previous revision Versiuni anterioare Urmatoarea versiune | Versiuni anterioare | ||
15:teme:haskell-kalah [2015/04/09 14:27] Lucian Mogoșanu [Bonus: Minimax (20p)] |
15:teme:haskell-kalah [2016/04/05 09:59] (curent) Mihnea Muraru [Precizări] |
||
---|---|---|---|
Linia 2: | Linia 2: | ||
* Responsabili: [[mmihnea@gmail.com|Mihnea Muraru]], [[lucian.mogosanu@cs.pub.ro|Lucian Mogoșanu]] | * Responsabili: [[mmihnea@gmail.com|Mihnea Muraru]], [[lucian.mogosanu@cs.pub.ro|Lucian Mogoșanu]] | ||
- | * Deadline: TODO | + | * Deadline: 06.05.2015 |
* Data publicării: 09.04.2015 | * Data publicării: 09.04.2015 | ||
* Data ultimei modificări: 09.04.2015 | * Data ultimei modificări: 09.04.2015 | ||
Linia 26: | Linia 26: | ||
Rezolvarea temei este structurată pe etapele de mai jos. Începeți prin a vă familiariza cu structura **arhivei** de [[#Resurse|resurse]]. În rezolvare, exploatați **testele** drept cazuri de utilizare a funcțiilor pe care le implementați. | Rezolvarea temei este structurată pe etapele de mai jos. Începeți prin a vă familiariza cu structura **arhivei** de [[#Resurse|resurse]]. În rezolvare, exploatați **testele** drept cazuri de utilizare a funcțiilor pe care le implementați. | ||
- | === Tabla și mutările (80p) === | + | === Tabla și mutările (90p) === |
Implementați tipurile de date și funcțiile din fișierul ''Board.hs'', conform indicațiilor locale. Testele aferente se găsesc în fișierul ''BoardTest.hs''. După implementarea (eventual parțială) a tablei și a mutărilor, puteți utiliza funcția ''twoHumans'' din fișierul ''Interactive.hs'': introduceți numărul casei (de la ''1'' la ''6'', numerotat de la stânga la dreapta), urmat de ''Enter'', pentru precizarea mutărilor. | Implementați tipurile de date și funcțiile din fișierul ''Board.hs'', conform indicațiilor locale. Testele aferente se găsesc în fișierul ''BoardTest.hs''. După implementarea (eventual parțială) a tablei și a mutărilor, puteți utiliza funcția ''twoHumans'' din fișierul ''Interactive.hs'': introduceți numărul casei (de la ''1'' la ''6'', numerotat de la stânga la dreapta), urmat de ''Enter'', pentru precizarea mutărilor. | ||
Pentru implementarea tablei de joc, aveți în vedere utilizarea unei structuri de date care să permită parcurgerea și actualizarea ușoară a numărului de semințe din fiecare casă. De asemenea, gândiți structura ''Board'' astfel încât să vă faciliteze implementarea funcțiilor exportate de ''Board.hs''. | Pentru implementarea tablei de joc, aveți în vedere utilizarea unei structuri de date care să permită parcurgerea și actualizarea ușoară a numărului de semințe din fiecare casă. De asemenea, gândiți structura ''Board'' astfel încât să vă faciliteze implementarea funcțiilor exportate de ''Board.hs''. | ||
- | === Euristică simplă (20p) === | + | === Euristică simplă (10p) === |
Implementați funcția ''step'' din fișierul ''AISimple.hs'', conform specificațiilor locale. Euristica propusă este de aplicare a acelei mutări care conduce la **scorul maxim** al calculatorului în pasul următor. Testele aferente se găsesc în fișierul ''AISimpleTest.hs''. Pentru testare, utilizați funcția ''userMode'' din fișierul ''AISimple.hs''. | Implementați funcția ''step'' din fișierul ''AISimple.hs'', conform specificațiilor locale. Euristica propusă este de aplicare a acelei mutări care conduce la **scorul maxim** al calculatorului în pasul următor. Testele aferente se găsesc în fișierul ''AISimpleTest.hs''. Pentru testare, utilizați funcția ''userMode'' din fișierul ''AISimple.hs''. | ||
Linia 53: | Linia 53: | ||
* Unde este adecvat, se vor utiliza **funcționale**, în locul recursivității explicite. Cazurile evidente vor fi **depunctate**. | * Unde este adecvat, se vor utiliza **funcționale**, în locul recursivității explicite. Cazurile evidente vor fi **depunctate**. | ||
* Încercați să exploatați la maxim **bibliotecile** ''[[http://hackage.haskell.org/package/base-4.7.0.0/docs/Data-List.html|Data.List]]'' și ''[[http://hackage.haskell.org/package/containers-0.2.0.1/docs/Data-Sequence.html|Data.Sequence]]''. Ambele biblioteci vă pot fi utile atât pentru construirea tablei de joc, cât și pentru proiectarea algoritmilor de parcurgere a acesteia. | * Încercați să exploatați la maxim **bibliotecile** ''[[http://hackage.haskell.org/package/base-4.7.0.0/docs/Data-List.html|Data.List]]'' și ''[[http://hackage.haskell.org/package/containers-0.2.0.1/docs/Data-Sequence.html|Data.Sequence]]''. Ambele biblioteci vă pot fi utile atât pentru construirea tablei de joc, cât și pentru proiectarea algoritmilor de parcurgere a acesteia. | ||
+ | |||
== Resurse == | == Resurse == | ||
- | * {{:teme15:haskell-kalah:haskell-kalah.zip|Arhiva de pornire}} | + | * {{15:teme:haskell-kalah:haskell-kalah.zip|Arhiva de pornire}} |
Organizarea arhivei și modalitatea de rulare a testelor sunt descrise în fișierul ''readme.txt''. | Organizarea arhivei și modalitatea de rulare a testelor sunt descrise în fișierul ''readme.txt''. |