Svar: Här är det (återfinns också på föreläsningsbild 9 och 10).
Svar: Egentligen räcker det att komma på var någonstans minimax skall stoppas in. Men för att veta om allt fungerar som det skall så bör ju de två predikaten definieras, tillsammans med min_to_move, max_to_move, terminal_won och terminal_lost (du kan utgå från NIM eller så väntar du med att pröva tills du löst uppgift 2).
Svar: Om ni minns move(P1,P2) från föreläsningen så fungerade den så att givet en position P1 så returneras en ny position P2. moves(P1,L) skall fungera på liknande sätt, men istället för att returnera en position så skall en lista av positioner L returneras, dvs. alla positioner som kan nås från P1. Detta kan lösas genom att ni definierar move/2 som på föreläsningen och sedan i moves/2 anropar move/2 i t.ex. bagof/3.
Svar: Endast grundläggande funktionalitet krävs, dvs. en position i vilken max har vunnit skall ge maximalt med poäng (t.ex. 1), en position i vilken max har förlorat skall ge minimalt med poäng (t.ex. 0), och övriga positioner skall ge ett värde däremellan (t.ex. 0.5).