/* Tracassin */
tr(Liste_Etats, ListeActions) :- 
	etat_i(Ei),	
	etat_f(Ef),
	solve(Ef,[Ei],[],Liste_Etats,ListeActions).

solve(Ef,[Ef|E],As, [Ef|E],As).

solve(Ef, [Ec|S],As, LE,LA):-
	genere_etat_valide(Ec,Es,R),
	%\+ member(Es,S),
	solve(Ef, [Es,Ec|S],[R|As], LE,LA).


genere_etat_valide(Ec,Es,r1):-
	append(H,[n,-|L],Ec),
	append(H,[-,n|L],Es).
genere_etat_valide(Ec,Es,r2):-
	append(H,[-,b|L],Ec),
	append(H,[b,-|L],Es).

genere_etat_valide(Ec,Es,r3):-
	append(H,[n,b,-|L],Ec),
	append(H,[-,b,n|L],Es).

genere_etat_valide(Ec,Es,r4):-
	append(H,[-,n,b|L],Ec),
	append(H,[b,n,-|L],Es).




 
/* Jeu d'essai */

etat_i([n,n,n,n,n,-,b,b,b,b,b]).
etat_f([b,b,b,b,b,-,n,n,n,n,n]).  

/* Tests 

| ?- tr(L,A).

A = [r1,r4,r2,r3,r3,r1,r4,r4,r4,r2,r3,r3,r3,r3,r1,r4,r4,r4,r4,r4,r1,r3,r3,r3,r3,r2,r4,r4,r4,r1,r3,r3,r2,r4,r1]
L = [[b,b,b,b,b,-,n,n,n,n,n],[b,b,b,b,b,n,-,n,n,n,n],[b,b,b,b,-,n,b,n,n,n,n],[b,b,b,-,b,n,b,n,n,n,n],[b,b,b,n,b,-,b,n,n,n,n],[b,b,b,n,b,n,b,-,n,n,n],[b,b,b,n,b,n,b,n,-,n,n],[b,b,b,n,b,n,-,n,b,n,n],[b,b,b,n,-,n,b,n,b,n,n],[b,b,-,n,b,n,b,n,b,n,n],[b,-,b,n,b,n,b,n,b,n,n],[b,n,b,-,b,n,b,n,b,n,n],[b,n,b,n,b,-,b,n,b,n,n],[b,n,b,n,b,n,b,-,b,n,n],[b,n,b,n,b,n,b,n,b,-,n],[b,n,b,n,b,n,b,n,b,n,-],[b,n,b,n,b,n,b,n,-,n,b],[b,n,b,n,b,n,-,n,b,n,b],[b,n,b,n,-,n,b,n,b,n,b],[b,n,-,n,b,n,b,n,b,n,b],[-,n,b,n,b,n,b,n,b,n,b],[n,-,b,n,b,n,b,n,b,n,b],[n,n,b,-,b,n,b,n,b,n,b],[n,n,b,n,b,-,b,n,b,n,b],[n,n,b,n,b,n,b,-,b,n,b],[n,n,b,n,b,n,b,n,b,-,b],[n,n,b,n,b,n,b,n,-,b,b],[n,n,b,n,b,n,-,n,b,b,b],[n,n,b,n,-,n,b,n,b,b,b],[n,n,-,n,b,n,b,n,b,b,b],[n,n,n,-,b,n,b,n,b,b,b],[n,n,n,n,b,-,b,n,b,b,b],[n,n,n,n,b,n,b,-,b,b,b],[n,n,n,n,b,n,-,b,b,b,b],[n,n,n,n,-,n,b,b,b,b,b],[n,n,n,n,n,-,b,b,b,b,b]] ? ;

A = [r2,r3,r1,r4,r4,r2,r3,r3,r3,r1,r4,r4,r4,r4,r2,r3,r3,r3,r3,r3,r2,r4,r4,r4,r4,r1,r3,r3,r3,r2,r4,r4,r1,r3,r2]
L = [[b,b,b,b,b,-,n,n,n,n,n],[b,b,b,b,-,b,n,n,n,n,n],[b,b,b,b,n,b,-,n,n,n,n],[b,b,b,b,n,b,n,-,n,n,n],[b,b,b,b,n,-,n,b,n,n,n],[b,b,b,-,n,b,n,b,n,n,n],[b,b,-,b,n,b,n,b,n,n,n],[b,b,n,b,-,b,n,b,n,n,n],[b,b,n,b,n,b,-,b,n,n,n],[b,b,n,b,n,b,n,b,-,n,n],[b,b,n,b,n,b,n,b,n,-,n],[b,b,n,b,n,b,n,-,n,b,n],[b,b,n,b,n,-,n,b,n,b,n],[b,b,n,-,n,b,n,b,n,b,n],[b,-,n,b,n,b,n,b,n,b,n],[-,b,n,b,n,b,n,b,n,b,n],[n,b,-,b,n,b,n,b,n,b,n],[n,b,n,b,-,b,n,b,n,b,n],[n,b,n,b,n,b,-,b,n,b,n],[n,b,n,b,n,b,n,b,-,b,n],[n,b,n,b,n,b,n,b,n,b,-],[n,b,n,b,n,b,n,b,n,-,b],[n,b,n,b,n,b,n,-,n,b,b],[n,b,n,b,n,-,n,b,n,b,b],[n,b,n,-,n,b,n,b,n,b,b],[n,-,n,b,n,b,n,b,n,b,b],[n,n,-,b,n,b,n,b,n,b,b],[n,n,n,b,-,b,n,b,n,b,b],[n,n,n,b,n,b,-,b,n,b,b],[n,n,n,b,n,b,n,b,-,b,b],[n,n,n,b,n,b,n,-,b,b,b],[n,n,n,b,n,-,n,b,b,b,b],[n,n,n,-,n,b,n,b,b,b,b],[n,n,n,n,-,b,n,b,b,b,b],[n,n,n,n,n,b,-,b,b,b,b],[n,n,n,n,n,-,b,b,b,b,b]] ? ;

(8 ms) no
 yes

       
*/
