From cd5bf3c8053eae1709f8555a91746723bec108df Mon Sep 17 00:00:00 2001 From: Cavailles Kevin Date: Sat, 13 Mar 2021 16:15:21 +0100 Subject: [PATCH] initial commit --- TP1/CR_TP1.odt | Bin 0 -> 152914 bytes TP1/aetoile.pl | 271 ++++++++++++++++++++++++++++++++++ TP1/avl.pl | 368 ++++++++++++++++++++++++++++++++++++++++++++++ TP1/taquin.pl | 253 ++++++++++++++++++++++++++++++++ TP1/taquin.txt | 0 TP2/CR_TP2.odt | Bin 0 -> 58376 bytes TP2/negamax.pl | 202 ++++++++++++++++++++++++++ TP2/tictactoe.pl | 371 +++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 1465 insertions(+) create mode 100644 TP1/CR_TP1.odt create mode 100644 TP1/aetoile.pl create mode 100644 TP1/avl.pl create mode 100644 TP1/taquin.pl create mode 100644 TP1/taquin.txt create mode 100644 TP2/CR_TP2.odt create mode 100644 TP2/negamax.pl create mode 100644 TP2/tictactoe.pl diff --git a/TP1/CR_TP1.odt b/TP1/CR_TP1.odt new file mode 100644 index 0000000000000000000000000000000000000000..b006a66730ef572555747e9f210cfe2fcb56b94c GIT binary patch literal 152914 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%0Dwzo0#y_^ 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 z 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

a}?Pa&vubwGLFEeZ#E1Uqeu2)6JhKAk| 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 auO~E$G7vzV=JjL51Y7`9GV-9nr~d`d#bs3h literal 0 HcmV?d00001 diff --git a/TP1/aetoile.pl b/TP1/aetoile.pl new file mode 100644 index 0000000..a9fdc43 --- /dev/null +++ b/TP1/aetoile.pl @@ -0,0 +1,271 @@ +%******************************************************************************* +% AETOILE +%******************************************************************************* + +/* +Rappels sur l'algorithme + +- structures de donnees principales = 2 ensembles : P (etat pendants) et Q (etats clos) +- P est dedouble en 2 arbres binaires de recherche equilibres (AVL) : Pf et Pu + + Pf est l'ensemble des etats pendants (pending states), ordonnes selon + f croissante (h croissante en cas d'egalite de f). Il permet de trouver + rapidement le prochain etat a developper (celui qui a f(U) minimum). + + Pu est le meme ensemble mais ordonne lexicographiquement (selon la donnee de + l'etat). Il permet de retrouver facilement n'importe quel etat pendant + + On gere les 2 ensembles de fa�on synchronisee : chaque fois qu'on modifie + (ajout ou retrait d'un etat dans Pf) on fait la meme chose dans Pu. + + Q est l'ensemble des etats deja developpes. Comme Pu, il permet de retrouver + facilement un etat par la donnee de sa situation. + Q est modelise par un seul arbre binaire de recherche equilibre. + +Predicat principal de l'algorithme : + + aetoile(Pf,Pu,Q) + + - reussit si Pf est vide ou bien contient un etat minimum terminal + - sinon on prend un etat minimum U, on genere chaque successeur S et les valeurs g(S) et h(S) + et pour chacun + si S appartient a Q, on l'oublie + si S appartient a Ps (etat deja rencontre), on compare + g(S)+h(S) avec la valeur deja calculee pour f(S) + si g(S)+h(S) < f(S) on reclasse S dans Pf avec les nouvelles valeurs + g et f + sinon on ne touche pas a Pf + si S est entierement nouveau on l'insere dans Pf et dans Ps + - appelle recursivement etoile avec les nouvelles valeurs NewPF, NewPs, NewQs + +*/ + +%******************************************************************************* + +:- ['avl.pl']. % predicats pour gerer des arbres bin. de recherche +:- ['taquin.pl']. % predicats definissant le systeme a etudier + +%******************************************************************************* + +main() :- + % initialisations Pf, Pu et Q + + % lancement de Aetoile + initial_state(Init), + heuristique(Init,H), + empty(Pf), + empty(Pu), + empty(Qs), + insert([[H, H, 0], Init], Pf, Pf_new), + insert([Init, [H, H, 0], nil, nil], Pu, Pu_new), + aetoile(Pf_new,Pu_new,Qs). + + + %******** + % A FAIRE + %******** + + + +%******************************************************************************* + +% + +aetoile([],[], _):- + write('PAS de SOLUTION : L_ETAT FINAL N_EST PAS ATTEIGNABLE !'), + !. + +aetoile(Pf, Pu, Qs):- + + suppress_min([[F,H,G], U], Pf, Pf_tmp), + suppress([U,[F,H,G], Pere, Action], Pu, Pu_tmp), + Noeud = [U,[F,H,G], Pere, Action], + + % write('Noeud min : '), + % writeln(Noeud), + + + (final_state(U) -> + insert(Noeud, Qs, Qs_new), + affichage_solution(U, Qs_new) + ; + expand(Noeud, G, SList), + loop_successor(SList, Pf_tmp, Pu_tmp, Qs, Pf_new, Pu_new), + insert(Noeud, Qs, Qs_new), + + /*write('PF height: '), + height(Pf_tmp,PFSize), + writeln(PFSize), + write('PU :'), + put_flat(Pu_new), + write('\n'), + write('QS : '), + put_flat(Qs_new),*/ + + aetoile(Pf_new, Pu_new, Qs_new) + % Niter is Niter1+1, + % write('iteration n°'), + % writeln(Niter) + ). + + + + + +%******************************************************************************* + +affichage_solution(U, Qs):- + belongs([U, _Val, Pere, Action], Qs), + get_solution(Pere, Tmp), + write('\n'), + writeln('\nSolution : '), + print_l( [[U, Action] |Tmp] ). + + +get_solution(nil,[]):- !. + +get_solution([U,_Val,Pere, Action], [ [U, Action] | Rest]) :- + get_solution(Pere,Rest). + +print_l([]). + +print_l([[ [A,B,C], Action] |T]):- + print_l(T), + write('action : '), + writeln(Action), + writeln(A), + writeln(B), + writeln(C), + write('\n'). + + + + +expand([U, Val, P, A], GU, SList):- + Noeud = [U, Val, P, A], + findall([S,[F,H,G], Noeud , Action], + (rule(Action,C,U,S), heuristique(S, H), + G is GU+C, + F is H+G), + SList). + + + +loop_successor([],Pf,Pu,_,Pf,Pu). + +loop_successor([[S,[F,H,G], Pere, Action]| TailS_eval] , Pf , Pu, Qs, Pf_new, Pu_new) :- + + ( belongs([S, _, _, _], Qs) -> + + loop_successor(TailS_eval, Pf, Pu, Qs, Pf_new, Pu_new) + + ; + ( belongs( [S, [OldF, _, _], _, _ ], Pu) -> + + ( F < OldF -> + %writeln('dans F <'), + maj([S, [OldF, OldH, OldG], _, _], [S,[F,H,G], Pere, Action], Pu, Pu_tmp), + maj([[OldF, OldH, OldG], S], [[F,H,G], S], Pf, Pf_tmp) + ; + %writeln('dans F >'), + Pf_tmp = Pf, + Pu_tmp = Pu + ) + + ; + %writeln('hors belongs'), + insert([[F,H,G], S], Pf , Pf_tmp), + insert([S,[F,H,G], Pere, Action], Pu, Pu_tmp) + ), + + loop_successor(TailS_eval, Pf_tmp, Pu_tmp, Qs, Pf_new, Pu_new) + + ). + + + +maj(EltDel, EltAdd, AvlAvant, AvlApres):- + suppress(EltDel,AvlAvant, AvlTmp), + insert(EltAdd, AvlTmp, AvlApres). + + +%******* +% TESTS +%******* +get_pf(1, [[5,5,0], [[b, h, c], [a, f, d], [g,vide,e]] ]). +get_pf(2, [[7,6,1],[[b,h,c],[a,f,d],[vide,g,e]]] ). + + +get_current_pu(0, [[H,H,0], State]) :- + initial_state(State), + heuristique(State,H). + + + +get_pu(1, [[[b, h, c], [a, f, d], [g,vide,e]],[5,5,0], nil, nil]). +get_pu(2, [[[b,h,c],[a,f,d],[vide,g,e]],[7,6,1],[[[b,h,c],[a,f,d],[g,vide,e]],[5,5,0],nil, nil]]). + +get_slist_initial_state(SList) :- + SList = [ + [ [[b, h, c], [a, vide, d], [g, f, e]], [5,4,1], [ [[b, h, c], [a, f, d], [g, vide, e]], [5,5,0], nil, nil], up], + [ [[b, h, c], [a, f, d], [vide, g, e]], [7,6,1], [ [[b, h, c], [a, f, d], [g, vide, e]], [5,5,0], nil, nil], left], + [ [[b, h, c], [a, f, d], [g, e, vide]], [7,6,1], [ [[b, h, c], [a, f, d], [g, vide, e]], [5,5,0], nil, nil], right] + ]. + +get_pf(Nb,Pos, X) :- + getPu(Nb, [[F,_,_], U]), + getPf(Nb, Pere), + rule(Pos, 1, U, S), + heuristique(S,Hn), + Fn is Hn+F, + X = [S,[Fn,Hn,F],Pere]. + +get_pf_up(Nb, X) :- + getPf(Nb,up, X). + +get_pf_left(Nb, X) :- + getPf(Nb,left, X). + +get_pf_right(Nb, X) :- + getPf(Nb,right, X). + +get_pf_down(Nb, X):- + getPf(Nb, down, X). + + +maj_test(1, A):- + getPfUp(EltPfUp), + getPfLeft(EltPfLeft), + getPfRight(EltPfRight), + + +%******insert 3U from initial_state******* + + insert(EltPfUp, nil, Pf), + insert(EltPfLeft, Pf, Pf2), + insert(EltPfRight, Pf2, Pf3), + + +%******Replace LeftU with initial_state**** + + getPf(1, EltPf), + maj(EltPfLeft, EltPf, Pf3, A). + + + +insert_test(1, A) :- + getPfUp(2,EltPfUp), + getPfRight(2,EltPfRight), + + insert(EltPfUp, nil, Pf2), + insert(EltPfRight, Pf2, A), + belongs(EltPfRight, A). + +test_pred_expand() :- + get_pf(1,[[_F, _H, G], U]), + expand(U, G, SList), + get_slist_initial_state(SList). + + + + diff --git a/TP1/avl.pl b/TP1/avl.pl new file mode 100644 index 0000000..4e718cb --- /dev/null +++ b/TP1/avl.pl @@ -0,0 +1,368 @@ +%*************************** +% Gestion d'un AVL en Prolog +%*************************** + +%*************************** +% INSA TOULOUSE - P.ESQUIROL +% mars 2017 +%*************************** + +%************************* +% unit tests : OK +% integration aetoile : OK +%************************* + +% Les AVL sont des arbres BINAIRES DE RECHERCHE H-EQUILIBRES : +% La hauteur de l'avl A est définie par : +% -1, si A est vide (A=nil) +% 1 + max( hauteur(ss_arbre_gauche(A)), hauteur(ss_arbre_droitee(A)) ) sinon + +% Tout noeud de l'arbre est soit : +% - une feuille +% - un noeud interne tel que la différence de hauteur entre le sous-arbre droit +% et le sous-arbre gauche appartient à [-1,0,+1] + + +%*********************************************** +% PREDICATS EXPORTES ET COMPLEXITE ALGORITHMIQUE +%*********************************************** +% soit N = nombre de noeuds de l'arbre % UTILITE POUR A* +% % ---------------- +% empty(?Avl) O(1) %<<< initialisation de P et Q +% height(+Avl, ?Height) O(1) +% put_flat(+Avl) O(N) +% put_90(+Avl) O(N) +% belongs(+Elem, +Avl) O(log N) %<<< appartenance d'un noeud à Q +% subtree(+Elem, +Avl, Ss_Avl) O(log N) +% insert(+Elem, +Avant, ?Apres) O(log N) %<<< insertion d'un nouveau noeud dans P ou dans Q +% suppress(+Elem,+Avant,?Apres) O(log N) %<<< mise à jour <=> suppression puis insertion +% suppress_min(?Min,+Avant,?Apres) O(log N) %<<< supression du noeud minimal +% suppress_max(?Max,+Avant,?Apres) O(log N) + +%**************************** +% Prédicats internes (prives) +%**************************** + +% left_rotate(+Avant, ?Apres) O(1) +% right_rotate(+Avant, ?Apres) O(1) +% left_balance(+Avant, ?Apres) O(1) +% right_balance(+Avant, ?Apres) O(1) + + + + %------------------------------ + % Constructeur et test AVL vide + %------------------------------ + +empty(nil). + + %----------------- + % Hauteur d'un AVL + %----------------- + % par convention, un avl vide a une hauteur de -1 + % sinon la hauteur est enregistree au meme niveau que la racine de l'avl + % elle n'est pas calculee recursivement "from scratch" + % elle est mise à jour de façon incrémentale, apres chaque insertion ou suppression + % d'ou sa complexité en O(1) :-) + +height(nil, -1). +height(avl(_G,_R,_D, H), H). + + %------------------- + % Affichage d'un AVL + %------------------- + % dans l'ordre croissant (lexicographique) + +put_flat(nil). +put_flat(avl(G,R,D,_H)) :- + put_flat(G), + nl, write(R), + put_flat(D). + + %---------------------------- + % Affichage (couché) d'un AVL + %---------------------------- + +put_90(Avl) :- + nl, writeln('----------------------------------'), + put_90(Avl,""). + +put_90(nil,Str) :- + write(Str), write('.'). +put_90(avl(G,R,D,_H),Str) :- + append_strings(Str, " ", Str2), + put_90(D,Str2), + nl, write(Str), write(R),nl, + put_90(G,Str2). + + %----------------------------------------- + % Appartenance d'un element donne a un AVL + %----------------------------------------- + +belongs(Elem, avl(G,Racine,D,_Hauteur)) :- + (Elem = Racine -> + true + ; + (Elem @< Racine -> + belongs(Elem, G) + ; + belongs(Elem, D) %Racine @< Elem + ) + ). + + %------------------------------------------------------------ + % Recherche du sous-arbre qui a comme racine un element donne + %------------------------------------------------------------ + +subtree(Elem, avl(G,Racine,D,H), A) :- + (Elem = Racine -> + A = avl(G,Racine,D,H) + ; + (Elem @< Racine -> + subtree(Elem,G,A) + ; + subtree(Elem,D,A) %Racine @< Elem + ) + ). + + %---------------------- + % Rotations dans un avl + %---------------------- + % Les rotations ci-dessous décrivent uniquement les cas ou la rotation est possible. + % Dans les autres cas, ces relations échouent ; plus précisément : + % a/ si l'arbre est un avl vide, alors aucune rotation n'est possible ; + % b/ si l'arbre est un avl non vide mais si son ss-arbre gauche est un avl vide + % alors la rotation droite n'est pas possible ; + % c/ si l'arbre est un avl non vide mais si son ss-arbre droite est un avl vide + % alors la rotation gauche n'est pas possible. + +right_rotate(avl(G,R,D,_H), A_Apres) :- + height(D,HD), + G = avl(SG,RG,SD,_HG), + height(SD,HSD), + H_Inter is 1 + max(HSD, HD), + Inter = avl(SD,R,D,H_Inter), + height(SG,HSG), + H_Apres is 1 + max(HSG,H_Inter), + A_Apres = avl(SG,RG,Inter,H_Apres). + +left_rotate(avl(G,R,D,_), A_Apres) :- + height(G,HG), + D = avl(SG,RD,SD,_), + height(SG,HSG), + H_Inter is 1 + max(HSG, HG), + Inter = avl(G,R,SG,H_Inter), + height(SD,HSD), + H_Apres is 1 + max(H_Inter,HSD), + A_Apres = avl(Inter,RD,SD,H_Apres). + + %--------------------------------- + % Insertion equilibree dans un avl + %--------------------------------- + % On suppose que l'arbre avant insertion est equilibré (difference de hauteur + % entre les ss-arbres gauche et droite de 1 au maximum) + % L'insertion doit assurer qu'apres insertion l'arbre est toujours equilibre + % sinon les rotations necessaires sont effectuees. + + % On suppose que les noeuds contiennent des informations que l'on peut comparer + % a l'aide d'une relation d'ordre lexicographique (la cle c'est l'info elle-meme) + % En prolog, c'est la relation '@<' + % On peut comparer par exemple des integer, des string, des constantes, + % des listes d'entiers, des listes de constantes, etc ... bref, des termes clos + % T1 @< T2 est vrai si T1 est lexicographiquement inférieur a T2. + +insert(Elem, nil, avl(nil,Elem,nil,0)). +insert(Elem, AVL, NEW_AVL) :- + AVL = avl(Gauche,Racine,Droite,_Hauteur), + (Elem = Racine -> + % l'élément est déjà present, pas d'insertion possible + fail + ; + (Elem @< Racine -> + % insertion dans le ss-arbre gauche + insert(Elem, Gauche, New_Gauche), + height(New_Gauche, New_HG), + height(Droite, HD), + H_Int is 1+max(New_HG, HD), + AVL_INT = avl(New_Gauche, Racine, Droite, H_Int), + right_balance(AVL_INT, NEW_AVL) + ; + % Elem @> Racine + % insertion dans le ss-arbre droite + insert(Elem, Droite, New_Droite), + height(New_Droite, New_HD), + height(Gauche, HG), + H_Int is 1+max(New_HD, HG), + AVL_INT =avl(Gauche, Racine,New_Droite, H_Int), + left_balance(AVL_INT, NEW_AVL) + ) + ). + + %------------------------------------------------ + % Suppression d'un element quelconque dans un avl + %------------------------------------------------ + % On suppose que l'élément à supprimer appartient bien à l'AVL, + % sinon le predicat échoue (en particulier si l'AVL est vide). + +suppress(Elem, AVL, NEW_AVL) :- + AVL = avl(Gauche, Racine, Droite, _Hauteur), + (Elem = Racine -> + % cas de la suppression de la racine de l'avl + (Gauche = nil -> % cas simple d'une feuille ou d'un avl sans fils gauche + NEW_AVL = Droite + ; + (Droite = nil -> % cas simple d'un avl avec fils gauche mais sans fils droit + NEW_AVL = Gauche + ; + % cas d'un avl avec fils gauche ET fils droit + %Gauche \= nil + %Droite \= nil + suppress_max(Max, Gauche, New_Gauche), + AVL_INT = avl(New_Gauche,Max,Droite,_), + left_balance(AVL_INT, NEW_AVL) + ) + ) + ; + % cas des suppressions d'un element autre que la racine + (Elem @< Racine -> + % suppression dans le ss-arbre gauche + suppress(Elem, Gauche, New_Gauche), + AVL_INT = avl(New_Gauche, Racine, Droite,_), + left_balance(AVL_INT, NEW_AVL) + ; + %Racine @< Droite + % suppression dans le ss-arbre droite + suppress(Elem, Droite, New_Droite), + AVL_INT = avl(Gauche, Racine, New_Droite,_), + right_balance(AVL_INT, NEW_AVL) + ) + ). + + %------------------------------------------------------- + % Suppression du plus petit element dans un avl non vide + %------------------------------------------------------- + % Si l'avl est vide, le prédicat échoue + +suppress_min(Min, AVL, NEW_AVL) :- + AVL = avl(Gauche,Racine,Droite, _Hauteur), + (Gauche = nil -> + Min = Racine, + NEW_AVL = Droite + ; + % Gauche \= nil + suppress_min(Min, Gauche, New_Gauche), + AVL_INT = avl(New_Gauche, Racine, Droite,_), + left_balance(AVL_INT, NEW_AVL) + ). + + %------------------------------------------------------- + % Suppression du plus grand element dans un avl non vide + %------------------------------------------------------- + % Si l'avl est vide, le prédicat échoue + +suppress_max(Max, AVL, NEW_AVL) :- + AVL = avl(Gauche,Racine,Droite, _Hauteur), + (Droite = nil -> + Max = Racine, + NEW_AVL = Gauche + ; + % Droite \= nil + suppress_max(Max, Droite, New_Droite), + AVL_INT = avl(Gauche, Racine, New_Droite,_), + right_balance(AVL_INT, NEW_AVL) + ). + + %---------------------------------------- + % Re-equilibrages d'un avl vers la gauche + %---------------------------------------- + % - soit apres insertion d'un element dans le sous-arbre droite + % - soit apres suppression d'un élément dans le sous-arbre gauche + %---------------------------------------------------------------- + +left_balance(Avl, New_Avl) :- + Avl = avl(Gauche, Racine, Droite, _Hauteur), + height(Gauche, HG), + height(Droite, HD), + (HG is HD-2 -> + % le sous-arbre droite est trop haut + Droite = avl(G_Droite, _R_Droite, D_Droite, _HD), + height(G_Droite, HGD), + height(D_Droite, HDD), + (HDD > HGD -> + % une simple rotation gauche suffit + left_rotate(Avl, New_Avl) + ; + % il faut faire une rotation droite_gauche + right_rotate(Droite, New_Droite), + height(New_Droite, New_HD), + H_Int is 1+ max(HG, New_HD), + Avl_Int = avl(Gauche, Racine, New_Droite, H_Int), + left_rotate(Avl_Int, New_Avl) + ) + ; + % la suppression n'a pas desequilibre l'avl + New_Hauteur is 1+max(HG,HD), + New_Avl = avl(Gauche, Racine, Droite, New_Hauteur) + ). + + %---------------------------------------- + % Re-equilibrages d'un avl vers la droite + %---------------------------------------- + % - soit apres insertion d'un element dans le sous-arbre gauche + % - soit apres suppression d'un élément dans le sous-arbre droite + %---------------------------------------------------------------- + +right_balance(Avl, New_Avl) :- + Avl = avl(Gauche, Racine, Droite, _Hauteur), + height(Gauche, HG), + height(Droite, HD), + (HD is HG-2 -> + % le sous-arbre gauche est trop haut + Gauche = avl(G_Gauche, _R_Gauche, D_Gauche, _HG), + height(G_Gauche, HGG), + height(D_Gauche, HDG), + (HGG > HDG -> + % une simple rotation droite suffit + right_rotate(Avl, New_Avl) + ; + % il faut faire une rotation gauche_droite + left_rotate(Gauche, New_Gauche), + height(New_Gauche, New_HG), + H_Int is 1+ max(New_HG, HD), + Avl_Int = avl(New_Gauche, Racine, Droite, H_Int), + right_rotate(Avl_Int, New_Avl) + ) + ; + % la suppression n'a pas desequilibre l'avl + New_Hauteur is 1+max(HG,HD), + New_Avl = avl(Gauche, Racine, Droite, New_Hauteur) + ). + +%----------------------------------------- +% Arbres utilises pour les tests unitaires +%----------------------------------------- +avl_test(1, nil). +avl_test(2, avl(nil, 1, nil, 0)). +avl_test(3, avl(nil, 1, avl(nil,2,nil,0), 1)). +avl_test(4, avl(avl(nil,1,nil,0),2, nil, 1)). +avl_test(5, avl(avl(nil,1,nil,0), 2, avl(nil,3,nil,0),1) ). +avl_test(6, avl(avl(nil,5,nil,0), 6, avl(nil,7,nil,0),1) ). +avl_test(7, avl(G,4,D,2)) :- + avl_test(5,G), + avl_test(6,D). +avl_test(8, avl(G,5,D,2)) :- + D = avl(nil,6,nil,0), + avl_test(3,G). +avl_test(9, avl(G,3,D,2)) :- + G = avl(nil,1,nil,0), + avl_test(4,D). + +/* Test uniquement valable avec ECLiPSe + +avl_test(10, Final) :- + empty(Init), + (for(I,1,20), fromto(Init,In,Out,Final) do + insert(I,In,Out) + ). +*/ + diff --git a/TP1/taquin.pl b/TP1/taquin.pl new file mode 100644 index 0000000..ab204c1 --- /dev/null +++ b/TP1/taquin.pl @@ -0,0 +1,253 @@ +/* Fichier du probleme. + +Doit contenir au moins 4 predicats qui seront utilises par A* + + etat_initial(I) % definit l'etat initial + + etat_final(F) % definit l'etat final + + rule(Rule_Name, Rule_Cost, Before_State, After_State) % règles applicables + + heuristique(Current_State, Hval) % calcul de l'heuristique + + +Les autres prédicats sont spécifiques au Taquin. +*/ + + +%:- lib(listut). % Laisser cette directive en commentaire si vous utilisez Swi-Prolog + + % Sinon décommentez la ligne si vous utilisez ECLiPSe Prolog : + % -> permet de disposer du predicat nth1(N, List, E) + % -> permet de disposer du predicat sumlist(List, S) + % (qui sont predefinis en Swi-Prolog) + + +%*************************** +%DESCRIPTION DU JEU DU TAKIN +%*************************** + + %******************** + % ETAT INITIAL DU JEU + %******************** + % format : initial_state(+State) ou State est une matrice (liste de listes) + + +initial_state([ [a, b, c], + [g,vide,d], + [h, f, e] ]). % h1=4, h2=5, f*=5 + + + +% AUTRES EXEMPLES POUR LES TESTS DE A* + +/* +initial_state([ [ a, b, c], + [ g, h, d], + [vide,f, e] ]). % h2=2, f*=2 + +initial_state([ [b, c, d], + [a,vide,g], + [f, h, e] ]). % h2=10 f*=10 + +initial_state([ [f, g, a], + [h,vide,b], + [d, c, e] ]). % h2=16, f*=20 + +initial_state([ [e, f, g], + [d,vide,h], + [c, b, a] ]). % h2=24, f*=30 + +initial_state([ [a, b, c], + [g,vide,d], + [h, f, e]]). % etat non connexe avec l'etat final (PAS DE SOLUTION) +*/ + + + %****************** + % ETAT FINAL DU JEU + %****************** + % format : final_state(+State) ou State est une matrice (liste de listes) + +final_state([[a, b, c], + [h,vide, d], + [g, f, e]]). + + + %******************** + % AFFICHAGE D'UN ETAT + %******************** + % format : write_state(?State) ou State est une liste de lignes a afficher + +write_state([]). +write_state([Line|Rest]) :- + writeln(Line), + write_state(Rest). + + +%********************************************** +% REGLES DE DEPLACEMENT (up, down, left, right) +%********************************************** + % format : rule(+Rule_Name, ?Rule_Cost, +Current_State, ?Next_State) + +rule(up, 1, S1, S2) :- + vertical_permutation(_X,vide,S1,S2). + +rule(down, 1, S1, S2) :- + vertical_permutation(vide,_X,S1,S2). + +rule(left, 1, S1, S2) :- + horizontal_permutation(_X,vide,S1,S2). + +rule(right,1, S1, S2) :- + horizontal_permutation(vide,_X,S1,S2). + + %*********************** + % Deplacement horizontal + %*********************** + % format : horizontal_permutation(?Piece1,?Piece2,+Current_State, ?Next_State) + +horizontal_permutation(X,Y,S1,S2) :- + append(Above,[Line1|Rest], S1), + exchange(X,Y,Line1,Line2), + append(Above,[Line2|Rest], S2). + + %*********************************************** + % Echange de 2 objets consecutifs dans une liste + %*********************************************** + +exchange(X,Y,[X,Y|List], [Y,X|List]). +exchange(X,Y,[Z|List1], [Z|List2] ):- + exchange(X,Y,List1,List2). + + %********************* + % Deplacement vertical + %********************* + +vertical_permutation(X,Y,S1,S2) :- + append(Above, [Line1,Line2|Below], S1), % decompose S1 + delete(N,X,Line1,Rest1), % enleve X en position N a Line1, donne Rest1 + delete(N,Y,Line2,Rest2), % enleve Y en position N a Line2, donne Rest2 + delete(N,Y,Line3,Rest1), % insere Y en position N dans Rest1 donne Line3 + delete(N,X,Line4,Rest2), % insere X en position N dans Rest2 donne Line4 + append(Above, [Line3,Line4|Below], S2). % recompose S2 + + %*********************************************************************** + % Retrait d'une occurrence X en position N dans une liste L (resultat R) + %*********************************************************************** + % use case 1 : delete(?N,?X,+L,?R) + % use case 2 : delete(?N,?X,?L,+R) + +delete(1,X,[X|L], L). + +delete(N,X,[Y|L], [Y|R]) :- + delete(N1,X,L,R), + N is N1 + 1. + + + + %******************* + % PARTIE A COMPLETER + %******************* + + %******************************************************************* + % Coordonnees X(colonne),Y(Ligne) d'une piece P dans une situation U + %******************************************************************* + % format : coordonnees(?Coord, +Matrice, ?Element) + % Définit la relation entre des coordonnees [Ligne, Colonne] et un element de la matrice + /* + Exemples + + ?- coordonnees(Coord, [[a,b,c],[d,e,f]], e). % quelles sont les coordonnees de e ? + Coord = [2,2] + yes + + ?- coordonnees([2,3], [[a,b,c],[d,e,f]], P). % qui a les coordonnees [2,3] ? + P=f + yes + */ + %******** + % A FAIRE + %******** + +coordonnees([L,C], Mat, Elt) :- + nth1(L, Mat, Ligne), + nth1(C, Ligne, Elt). + + +malplace(P, U, F) :- + coordonnees(Coord1, U, P), + coordonnees(Coord2, F, P), + Coord1 \= Coord2. + + %************* + % HEURISTIQUES + %************* + +heuristique(U,H) :- +% heuristique1(U, H). % au debut on utilise l'heuristique 1 + heuristique2(U, H). % ensuite utilisez plutot l'heuristique 2 + + + %**************** + %HEURISTIQUE no 1 + %**************** + % Nombre de pieces mal placees dans l'etat courant U + % par rapport a l'etat final F + + + % Suggestions : définir d'abord le prédicat coordonnees(Piece,Etat,Lig,Col) qui associe à une pièce présente dans Etat + % ses coordonnees (Lig= numero de ligne, Col= numero de Colonne) + + % Definir ensuite le predicat malplace(P,U,F) qui est vrai si les coordonnes de P dans U et dans F sont differentes. + % On peut également comparer les pieces qui se trouvent aux mêmes coordonnees dans U et dans F et voir s'il s'agit de la + % même piece. + + % Definir enfin l'heuristique qui détermine toutes les pièces mal placées (voir prédicat findall) + % et les compte (voir prédicat length) + %******** + % A FAIRE + %******** +% heuristique1(U, H) :- +% final_state(Final), eval_matrice(U, Final, H). + +% eval_matrice([],[],0). +% eval_matrice([LM1|RM1], [LM2|RM2], H):- +% eval_ligne(LM1, LM2, HL), +% eval_matrice(RM1, RM2, HR), +% H is HL+HR. + +% eval_ligne([],[],0). +% eval_ligne([EltL1|RL1], [EltL2|RL2], HL) :- +% (EltL1 \= EltL2, EltL1 \= vide -> +% H = 1 +% ; +% H = 0 +% ), +% eval_ligne(RL1,RL2, HE), +% HL is H+HE. + +heuristique1(U,H) :- + final_state(F), + findall(1, (malplace(X, U,F), X \= vide ), L), + length(L,H). + %**************** + %HEURISTIQUE no 2 + %**************** + + % Somme des distances de Manhattan à parcourir par chaque piece + % entre sa position courante et sa positon dans l'etat final + + %******** + % A FAIRE + %******** +heuristique2(U, H) :- + final_state(Final), + findall(Dist, (distance(U,Final,Elt,Dist), Elt \= vide), L), + sum_list(L, H). + +distance(M1, M2, Elt, Dist):- + coordonnees([X1, Y1], M1, Elt), + coordonnees([X2, Y2], M2, Elt), + Dist is abs(X2-X1) + abs(Y2-Y1). + diff --git a/TP1/taquin.txt b/TP1/taquin.txt new file mode 100644 index 0000000..e69de29 diff --git a/TP2/CR_TP2.odt b/TP2/CR_TP2.odt new file mode 100644 index 0000000000000000000000000000000000000000..e2a2a019c5b273868eb6d182fe3b4e4503d210fd GIT binary patch literal 58376 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 literal 0 HcmV?d00001 diff --git a/TP2/negamax.pl b/TP2/negamax.pl new file mode 100644 index 0000000..d2cb10e --- /dev/null +++ b/TP2/negamax.pl @@ -0,0 +1,202 @@ + /* + Ce programme met en oeuvre l'algorithme Minmax (avec convention + negamax) et l'illustre sur le jeu du TicTacToe (morpion 3x3) + */ + +:- [tictactoe]. + + + /**************************************************** + ALGORITHME MINMAX avec convention NEGAMAX : negamax/5 + *****************************************************/ + + /* + negamax(+J, +Etat, +P, +Pmax, [?Coup, ?Val]) + + SPECIFICATIONS : + + retourne pour un joueur J donne, devant jouer dans + une situation donnee Etat, de profondeur donnee P, + le meilleur couple [Coup, Valeur] apres une analyse + pouvant aller jusqu'a la profondeur Pmax. + + Il y a 3 cas a decrire (donc 3 clauses pour negamax/5) + + 1/ la profondeur maximale est atteinte : on ne peut pas + developper cet Etat ; + il n'y a donc pas de coup possible a jouer (Coup = rien) + et l'evaluation de Etat est faite par l'heuristique. + + 2/ la profondeur maximale n'est pas atteinte mais J ne + peut pas jouer ; au TicTacToe un joueur ne peut pas jouer + quand le tableau est complet (totalement instancie) ; + il n'y a pas de coup a jouer (Coup = rien) + et l'evaluation de Etat est faite par l'heuristique. + + 3/ la profondeur maxi n'est pas atteinte et J peut encore + jouer. Il faut evaluer le sous-arbre complet issu de Etat ; + + - on determine d'abord la liste de tous les couples + [Coup_possible, Situation_suivante] via le predicat + successeurs/3 (deja fourni, voir plus bas). + + - cette liste est passee a un predicat intermediaire : + loop_negamax/5, charge d'appliquer negamax sur chaque + Situation_suivante ; loop_negamax/5 retourne une liste de + couples [Coup_possible, Valeur] + + - parmi cette liste, on garde le meilleur couple, c-a-d celui + qui a la plus petite valeur (cf. predicat meilleur/2); + soit [C1,V1] ce couple optimal. Le predicat meilleur/2 + effectue cette selection. + + - finalement le couple retourne par negamax est [Coup, V2] + avec : V2 is -V1 (cf. convention negamax vue en cours). + +A FAIRE : ECRIRE ici les clauses de negamax/5 +..................................... + */ +negamax(J,Etat,Pmax,Pmax,[nil,H]) :- + heuristique(J, Etat, H), !. + +negamax(J, Etat, _, _, [nil, H]) :- + situation_terminale(J, Etat), + heuristique(J ,Etat, H), !. + +negamax(J, Etat, P, Pmax, [Coup, V2]) :- + P < Pmax, + not(situation_terminale(J,Etat)), + successeurs(J, Etat, Succ), + loop_negamax(J, P, Pmax, Succ, Couples), + meilleur(Couples, [Coup, V1]), + V2 is -V1, !. + + /******************************************* + DEVELOPPEMENT D'UNE SITUATION NON TERMINALE + successeurs/3 + *******************************************/ + + /* + successeurs(+J,+Etat, ?Succ) + + retourne la liste des couples [Coup, Etat_Suivant] + pour un joueur donne dans une situation donnee + */ + +successeurs(J,Etat,Succ) :- + copy_term(Etat, Etat_Suiv), + findall([Coup,Etat_Suiv], + successeur(J,Etat_Suiv,Coup), + Succ). + + /************************************* + Boucle permettant d'appliquer negamax + a chaque situation suivante : + *************************************/ + + /* + loop_negamax(+J,+P,+Pmax,+Successeurs,?Liste_Couples) + retourne la liste des couples [Coup, Valeur_Situation_Suivante] + a partir de la liste des couples [Coup, Situation_Suivante] + */ + +loop_negamax(_,_, _ ,[], []). +loop_negamax(J,P,Pmax,[[Coup,Suiv]|Succ],[[Coup,Vsuiv]|Reste_Couples]) :- + loop_negamax(J,P,Pmax,Succ,Reste_Couples), %Récursion jusqu'à ce qu'il n'y ait plus de couple + adversaire(J,A), %Pour chaque couple, on récupère l'adversaire du joueur actuel, + Pnew is P+1, %On incrémente la profondeur courante, + negamax(A,Suiv,Pnew,Pmax, [_,Vsuiv]). %On relance négamax avec cette fois-ci le joueur adverse + % et la situation suivante (celle que l'on traite actuellement parmi les couples (Coup,Suiv)). + + /* + +A FAIRE : commenter chaque litteral de la 2eme clause de loop_negamax/5, + en particulier la forme du terme [_,Vsuiv] dans le dernier + litteral ? + */ + + /********************************* + Selection du couple qui a la plus + petite valeur V + *********************************/ + + /* + meilleur(+Liste_de_Couples, ?Meilleur_Couple) + + SPECIFICATIONS : + On suppose que chaque element de la liste est du type [C,V] + - le meilleur dans une liste a un seul element est cet element + - le meilleur dans une liste [X|L] avec L \= [], est obtenu en comparant + X et Y,le meilleur couple de L + Entre X et Y on garde celui qui a la petite valeur de V. + +A FAIRE : ECRIRE ici les clauses de meilleur/2 + */ +meilleur([X],X). +meilleur([[Coup, Val]|Rest], Bc) :- + meilleur(Rest, [BCoupTemp, BValTemp]), + + (Val < BValTemp -> + Bc = [Coup,Val] + ; + Bc = [BCoupTemp,BValTemp] + ). + + /****************** + PROGRAMME PRINCIPAL + *******************/ + +main(B,V, Pmax) :- + situation_initiale(Situation), + joueur_initial(J), + negamax(J, Situation, 0, Pmax, [B, V]). + +main(Pmax) :- + situation_initiale(Situation), + joueur_initial(J), + main_loop(J, Situation, Pmax). + + +main_loop(J, Situation, Pmax) :- + negamax(J, Situation, 0, Pmax, [B, V]), + writeln(B), writeln(V), + pretty_print(Situation), + successeur(J, Situation, B), + adversaire(J,A), + (B \= nil -> + main_loop(A, Situation, Pmax) + ). + + /* +A FAIRE : + Compl�ter puis tester le programme principal pour plusieurs valeurs de la profondeur maximale. + Pmax = 1, 2, 3, 4 ... + Commentez les r�sultats obtenus. + */ + + /**** + TESTS + *****/ + list_succ_init(LS) :- + LS = + [ [[1,1],[ [x,_,_],[_,_,_],[_,_,_] ]], + [[1,2],[ [_,x,_],[_,_,_],[_,_,_] ]], + [[1,3],[ [_,_,x],[_,_,_],[_,_,_] ]], + [[2,1],[ [_,_,_],[x,_,_],[_,_,_] ]], + [[2,2],[ [_,_,_],[_,x,_],[_,_,_] ]], + [[2,3],[ [_,_,_],[_,_,x],[_,_,_] ]], + [[3,1],[ [_,_,_],[_,_,_],[x,_,_] ]], + [[3,2],[ [_,_,_],[_,_,_],[_,x,_] ]], + [[3,3],[ [_,_,_],[_,_,_],[_,_,x] ]] ]. + + + + + test_pred_successeurs :- + situation_initiale(Situation), + joueur_initial(J), + successeurs(J,Situation, + LS), + list_succ_init(LS). + + diff --git a/TP2/tictactoe.pl b/TP2/tictactoe.pl new file mode 100644 index 0000000..4556398 --- /dev/null +++ b/TP2/tictactoe.pl @@ -0,0 +1,371 @@ + /********************************* + DESCRIPTION DU JEU DU TIC-TAC-TOE + *********************************/ + + /* + Une situation est decrite par une matrice 3x3. + Chaque case est soit un emplacement libre (Variable LIBRE), soit contient le symbole d'un des 2 joueurs (o ou x) + + Contrairement a la convention du tp precedent, pour modeliser une case libre + dans une matrice on n'utilise pas une constante speciale (ex : nil, 'vide', 'libre','inoccupee' ...); + On utilise plut�t un identificateur de variable, qui n'est pas unifiee (ex : X, A, ... ou _) . + La situation initiale est une "matrice" 3x3 (liste de 3 listes de 3 termes chacune) + o� chaque terme est une variable libre. + Chaque coup d'un des 2 joureurs consiste a donner une valeur (symbole x ou o) a une case libre de la grille + et non a deplacer des symboles deja presents sur la grille. + + Pour placer un symbole dans une grille S1, il suffit d'unifier une des variables encore libres de la matrice S1, + soit en ecrivant directement Case=o ou Case=x, ou bien en accedant a cette case avec les predicats member, nth1, ... + La grille S1 a change d'etat, mais on n'a pas besoin de 2 arguments representant la grille avant et apres le coup, + un seul suffit. + Ainsi si on joue un coup en S, S perd une variable libre, mais peut continuer a s'appeler S (on n'a pas besoin de la designer + par un nouvel identificateur). + */ + +situation_initiale([ [_,_,_], + [_,_,_], + [_,_,_] ]). + + % Convention (arbitraire) : c''est x qui commence + +joueur_initial(x). + + + % Definition de la relation adversaire/2 + +adversaire(x,o). +adversaire(o,x). + + + /**************************************************** + DEFINIR ICI a l'aide du predicat ground/1 comment + reconnaitre une situation terminale dans laquelle il + n'y a aucun emplacement libre : aucun joueur ne peut + continuer a jouer (quel qu'il soit). + ****************************************************/ + + +situation_terminale(_Joueur, Situation) :- + ground(Situation), !. + +situation_terminale(J, Situation) :- + alignement(Alig,Situation), + (alignement_gagnant(Alig,J) ; alignement_perdant(Alig,J)), + !. + + + + /*************************** + DEFINITIONS D'UN ALIGNEMENT + ***************************/ + +alignement(L, Matrix) :- ligne( L,Matrix). +alignement(C, Matrix) :- colonne( C,Matrix). +alignement(D, Matrix) :- diagonale(D,Matrix). + + /******************************************** + DEFINIR ICI chaque type d'alignement maximal + existant dans une matrice carree NxN. + ********************************************/ + +ligne(L, M) :- + nth1(_,M,L). + +colonne(C,M) :- + colonne(_,C,M). + +colonne(_,[],[]). +colonne(K, [Ele | Rest],[Ligne | M]) :- + nth1(K, Ligne, Ele), + colonne(K, Rest, M). + + /* Definition de la relation liant une diagonale D a la matrice M dans laquelle elle se trouve. + il y en a 2 sortes de diagonales dans une matrice carree(https://fr.wikipedia.org/wiki/Diagonale) : + - la premiere diagonale (principale) : (A I) + - la seconde diagonale : (Z R) + A . . . . . . . Z + . \ . . . . . / . + . . \ . . . / . . + . . . \ . / . . . + . . . . X . . . + . . . / . \ . . . + . . / . . . \ . . + . / . . . . . \ . + R . . . . . . . I + */ + +diagonale(D, M) :- + premiere_diag(1,D,M). + + % deuxieme definition A COMPLETER + +diagonale(D, M) :- + seconde_diag(_,D,M). + +premiere_diag(_,[],[]). +premiere_diag(K,[E|D],[Ligne|M]) :- + nth1(K,Ligne,E), + K1 is K+1, + premiere_diag(K1,D,M). + +seconde_diag(0, [], []). +seconde_diag(K, [E|D], [Ligne|M]) :- + seconde_diag(K1,D,M), + K is K1+1, + nth1(K,Ligne,E). + + + + /***************************** + DEFINITION D'UN ALIGNEMENT + POSSIBLE POUR UN JOUEUR DONNE + *****************************/ + +possible([X|L], J) :- unifiable(X,J), possible(L,J). +possible( [], _). + + /* Attention + il faut juste verifier le caractere unifiable + de chaque emplacement de la liste, mais il ne + faut pas realiser l'unification. + */ + +% A FAIRE +unifiable(X,J) :- + ground(X), + X = J. +unifiable(X,_J) :- + var(X). + + + /********************************** + DEFINITION D'UN ALIGNEMENT GAGNANT + OU PERDANT POUR UN JOUEUR DONNE J + **********************************/ + /* + Un alignement gagnant pour J est un alignement +possible pour J qui n'a aucun element encore libre. + */ + + /* + Remarque : le predicat ground(X) permet de verifier qu'un terme + prolog quelconque ne contient aucune partie variable (libre). + exemples : + ?- ground(Var). + no + ?- ground([1,2]). + yes + ?- ground(toto(nil)). + yes + ?- ground( [1, toto(nil), foo(a,B,c)] ). + no + */ + + /* Un alignement perdant pour J est un alignement gagnant pour son adversaire. */ + +% A FAIRE + +alignement_gagnant(Ali, J) :- + ground(Ali), + possible(Ali,J). + +alignement_perdant(Ali, J) :- + adversaire(J, Adv), + alignement_gagnant(Ali, Adv). + + /* **************************** + DEFINITION D'UN ETAT SUCCESSEUR + ****************************** */ + + /* + Il faut definir quelle operation subit la matrice + M representant l'Etat courant + lorsqu'un joueur J joue en coordonnees [L,C] + */ + +% A FAIRE +successeur(J, Etat, [L,C]) :- + nth1(L, Etat, Ligne), + nth1(C, Ligne, X), + var(X), + X = J. + + + /************************************** + EVALUATION HEURISTIQUE D'UNE SITUATION + **************************************/ + + /* + 1/ l'heuristique est +infini si la situation J est gagnante pour J + 2/ l'heuristique est -infini si la situation J est perdante pour J + 3/ sinon, on fait la difference entre : + le nombre d'alignements possibles pour J + moins + le nombre d'alignements possibles pour l'adversaire de J +*/ +%' + +heuristique(J,Situation,H) :- % cas 1 + H = 10000, % grand nombre approximant +infini + alignement(Alig,Situation), + alignement_gagnant(Alig,J), !. + +heuristique(J,Situation,H) :- % cas 2 + H = -10000, % grand nombre approximant -infini + alignement(Alig,Situation), + alignement_perdant(Alig,J), !. + + +% on ne vient ici que si les cut precedents n''ont pas fonctionne, +% c-a-d si Situation n''est ni perdante ni gagnante. + +%' A FAIRE cas 3' +heuristique(J,Situation,H) :- + adversaire(J, Adv), + findall(1, ( alignement(Ali, Situation), possible(Ali, J) ), Lj), + findall(1, ( alignement(Ali, Situation), possible(Ali, Adv) ), Ladv), + length(Lj, LenJ), + length(Ladv, LenAdv), + H is LenJ - LenAdv. + + +pretty_print([]). + +pretty_print([A,B,C]):- + writeln(A), + writeln(B), + writeln(C), + write('\n\n'). + + /************************** + TEST ET SITUATIONS DE TEST + **************************/ +situation_gagnanteJ([ [x,o,_], + [x,x,x], + [o,_,o] ]). + +situation_gagnante2J([ [x,o,_], + [x,x,x], + [o,_,x] ]). + + +situation_perdanteJ([ [ o,_,x], + [o,x,x], + [o,x,o] ]). + +situation_perdante2J([ [ o,_,x], + [o,x,x], + [o,o,o] ]). + +situation_nulle([ [x,x,o], + [o,o,x], + [x,o,x] ]). + +situation_test1([[x,o,_], + [x,x,_], + [_,_,o]]). + +situation_test2([[x,_,_], + [_,o,_], + [_,_,x]]). + +situation_chiffre([[1,2,3], + [4,5,6], + [7,8,9]]). + +lignes_chiffre(L) :- + L= [[1,2,3],[4,5,6],[7,8,9]]. + +colonnes_chiffre(L) :- + L= [[1,4,7],[2,5,8],[3,6,9]]. + +diagonales_chiffre(L) :- + L= [[1,5,9],[3,5,7]]. + +alignements_chiffre(L) :- + L = [[1,2,3],[4,5,6],[7,8,9],[1,4,7],[2,5,8],[3,6,9],[1,5,9],[3,5,7]]. + +/*RUN ALL TESTS*/ +test_all_pred :- + test_pred_situation_terminale, + test_pred_ligne, + test_pred_colonne, + test_pred_diagonale, + test_pred_alignement, + test_pred_alignement_gagnant, + test_pred_alignement_perdant, + test_heuristique_situation_gagnante, + test_heuristique_situation_perdante, + test_heuristique_situation_nulle, + test_heuristique_avantage. + + +test_pred_situation_terminale :- + situation_nulle(Final), + joueur_initial(J), + situation_terminale(J,Final). + +test_pred_ligne:- + situation_chiffre(Situation), + findall(Ligne,(ligne(Ligne,Situation)), L), + length(L,3), + lignes_chiffre(L). + +test_pred_colonne:- + situation_chiffre(Situation), + findall(Colonne,(colonne(Colonne,Situation)), L), + length(L,3), + colonnes_chiffre(L). + +test_pred_diagonale:- + situation_chiffre(Situation), + findall(Diagonale,(diagonale(Diagonale,Situation)), L), + length(L,2), + diagonales_chiffre(L). + +test_pred_alignement :- + situation_chiffre(Situation), + findall(Ali, (alignement(Ali, Situation)), L), + length(L,8), + alignements_chiffre(L). + +test_pred_alignement_gagnant:- + situation_gagnanteJ(Situation), + situation_gagnante2J(Situation2), + joueur_initial(J), + findall(1, ( alignement(Ali, Situation), alignement_gagnant(Ali,J) ), L), + length(L,1), + + findall(1, (alignement(Ali,Situation2), alignement_gagnant(Ali,J)), L2), + length(L2,2). + +test_pred_alignement_perdant:- + situation_perdanteJ(Situation), + situation_perdante2J(Situation2), + joueur_initial(J), + findall(1, ( alignement(Ali, Situation), alignement_perdant(Ali,J) ), L), + length(L,1), + + findall(1, (alignement(Ali,Situation2), alignement_perdant(Ali,J)), L2), + length(L2,2). + +test_heuristique_situation_gagnante :- + situation_gagnanteJ(Situation), + joueur_initial(J), + heuristique(J, Situation, 10000). + +test_heuristique_situation_perdante :- + situation_perdanteJ(Situation), + joueur_initial(J), + heuristique(J, Situation, -10000). + +test_heuristique_situation_nulle :- + situation_nulle(Situation), + joueur_initial(J), + heuristique(J, Situation, 0). + +test_heuristique_avantage :- + situation_test1(Situation), + joueur_initial(J), + heuristique(J, Situation, 1). +