Unelte utilizator

Unelte site


15:teme:haskell-kalah

Aceasta e o versiune anterioară a paginii.


Haskell: Kalah

  • Responsabil: Mihnea Muraru
  • Deadline: TODO
  • Data publicării: TODO
  • Data ultimei modificări: TODO
  • Data arhivei: TODO

Obiective

  • utilizarea mecanismelor funcționale și de tipuri ale limbajului Haskell pentru implementarea unui joc (Kalah/Mancala)
  • pentru bonus: exploatarea evaluării leneșe pentru explorarea controlată a spațiului stărilor într-un algoritm de inteligență artificială (Minimax).

Descriere

Scopul temei este implementarea jocului Kalah (denumit și Mancala). Modul de joc este descris aici. Se va implementa varianta de Kalah cu 48 de piese.

În final, programul vostru:

  1. va permite jocul între doi utilizatori umani
  2. îi va da posibilitatea unui jucător uman să joace împotriva calculatorului, AI-ul fiind bazat pe o euristică simplă
  3. pentru bonus, AI-ul va implementa o euristică mai complexă, bazată pe algoritmul minimax.

Cerințe

Rezolvarea temei este structurată pe etapele de mai jos. Începeți prin a vă familiariza cu structura arhivei de resurse. În rezolvare, exploatați testele drept cazuri de utilizare a funcțiilor pe care le implementați.

Tabla și mutările (80p)

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.

Euristică simplă (20p)

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.

Bonus: Minimax (20p)

TODO

Precizări

  • 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 Data.List și 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

Organizarea arhivei și modalitatea de rulare a testelor sunt descrise în fișierul readme.txt.

Referințe

15/teme/haskell-kalah.1428509904.txt.gz · Ultima modificare: 2015/04/08 19:18 de către Lucian Mogoșanu