Unelte utilizator

Unelte site


15:teme:haskell-kalah
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
15:teme:haskell-kalah [2015/04/09 15:29]
Mihnea Muraru [Haskell: Kalah]
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: ​01.05.2015+* 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''​.
15/teme/haskell-kalah.1428582589.txt.gz · Ultima modificare: 2015/04/09 15:29 de către Mihnea Muraru