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

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

solve(Ef, [Ec|S], L):-
	genere_etat_valide(Ec,Es,R),
	% write(R), nl,
	%\+ member(Es,S),
	solve(Ef, [Es,Ec|S], L).


genere_etat_valide([n,-|L],[-,n|L],r1).
genere_etat_valide([-,b|L],[b,-|L],r2).
genere_etat_valide([n,b,-|L],[-,b,n|L],r3).
genere_etat_valide([-,n,b|L],[b,n,-|L],r4).  

genere_etat_valide([C|L1],[C|L2],R) :-
	genere_etat_valide(L1,L2,R).

 
/* 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 
 yes
| ?- tr(A).      

A = [[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

A = [[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
       
*/
