/* Tracassin */
tr(P) :-
        etat_i(E),
        transfo([E],P),
	write(P).

transfo([Ef|L],[Ef|L]):-
        etat_f(Ef).

transfo([Ec|La],P):-
        ope(Ec,Es,Op),
	transfo([Es,Ec|La],P).


ope([n,l|L],[l,n|L],r1).
ope([l,b|L],[b,l|L],r2).
ope([n,b,l|L],[l,b,n|L],r3).
ope([l,n,b|L],[b,n,l|L],r4).  

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

 
/* Jeu d'essai */

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

/* Tests 
 
| ?- tr(L).
  [[b,b,b,b,b,l,n,n,n,n,n],[b,b,b,b,b,n,l,n,n,n,n],[b,b,b,b,l,n,b,n,n,n,n],[b,b,b,l,b,n,b,n,n,n,n],[b,b,b,n,b,l,b,n,n,n,n],[b,b,b,n,b,n,b,l,n,n,n],[b,b,b,n,b,n,b,n,l,n,n],[b,b,b,n,b,n,l,n,b,n,n],[b,b,b,n,l,n,b,n,b,n,n],[b,b,l,n,b,n,b,n,b,n,n],[b,l,b,n,b,n,b,n,b,n,n],[b,n,b,l,b,n,b,n,b,n,n],[b,n,b,n,b,l,b,n,b,n,n],[b,n,b,n,b,n,b,l,b,n,n],[b,n,b,n,b,n,b,n,b,l,n],[b,n,b,n,b,n,b,n,b,n,l],[b,n,b,n,b,n,b,n,l,n,b],[b,n,b,n,b,n,l,n,b,n,b],[b,n,b,n,l,n,b,n,b,n,b],[b,n,l,n,b,n,b,n,b,n,b],[l,n,b,n,b,n,b,n,b,n,b],[n,l,b,n,b,n,b,n,b,n,b],[n,n,b,l,b,n,b,n,b,n,b],[n,n,b,n,b,l,b,n,b,n,b],[n,n,b,n,b,n,b,l,b,n,b],[n,n,b,n,b,n,b,n,b,l,b],[n,n,b,n,b,n,b,n,l,b,b],[n,n,b,n,b,n,l,n,b,b,b],[n,n,b,n,l,n,b,n,b,b,b],[n,n,l,n,b,n,b,n,b,b,b],[n,n,n,l,b,n,b,n,b,b,b],[n,n,n,n,b,l,b,n,b,b,b],[n,n,n,n,b,n,b,l,b,b,b],[n,n,n,n,b,n,l,b,b,b,b],[n,n,n,n,l,n,b,b,b,b,b],[n,n,n,n,n,l,b,b,b,b,b]] 
P = [[b,b,b,b,b,l,n,n,n|...],[b,b,b,b,b,n,l,n,n|...],[b,b,b,b,l,n,b,n|...],[b,b,b,l,b,n,b|...],[b,b,b,n,b,l|...],[b,b,b,n,b|...],[b,b,b,n|...],[b,b,b|...],[b,b|...],[...|...]|...] ? ;
[[b,b,b,b,b,l,n,n,n,n,n],[b,b,b,b,l,b,n,n,n,n,n],[b,b,b,b,n,b,l,n,n,n,n],[b,b,b,b,n,b,n,l,n,n,n],[b,b,b,b,n,l,n,b,n,n,n],[b,b,b,l,n,b,n,b,n,n,n],[b,b,l,b,n,b,n,b,n,n,n],[b,b,n,b,l,b,n,b,n,n,n],[b,b,n,b,n,b,l,b,n,n,n],[b,b,n,b,n,b,n,b,l,n,n],[b,b,n,b,n,b,n,b,n,l,n],[b,b,n,b,n,b,n,l,n,b,n],[b,b,n,b,n,l,n,b,n,b,n],[b,b,n,l,n,b,n,b,n,b,n],[b,l,n,b,n,b,n,b,n,b,n],[l,b,n,b,n,b,n,b,n,b,n],[n,b,l,b,n,b,n,b,n,b,n],[n,b,n,b,l,b,n,b,n,b,n],[n,b,n,b,n,b,l,b,n,b,n],[n,b,n,b,n,b,n,b,l,b,n],[n,b,n,b,n,b,n,b,n,b,l],[n,b,n,b,n,b,n,b,n,l,b],[n,b,n,b,n,b,n,l,n,b,b],[n,b,n,b,n,l,n,b,n,b,b],[n,b,n,l,n,b,n,b,n,b,b],[n,l,n,b,n,b,n,b,n,b,b],[n,n,l,b,n,b,n,b,n,b,b],[n,n,n,b,l,b,n,b,n,b,b],[n,n,n,b,n,b,l,b,n,b,b],[n,n,n,b,n,b,n,b,l,b,b],[n,n,n,b,n,b,n,l,b,b,b],[n,n,n,b,n,l,n,b,b,b,b],[n,n,n,l,n,b,n,b,b,b,b],[n,n,n,n,l,b,n,b,b,b,b],[n,n,n,n,n,b,l,b,b,b,b],[n,n,n,n,n,l,b,b,b,b,b]]
P = [[b,b,b,b,b,l,n,n,n|...],[b,b,b,b,l,b,n,n,n|...],[b,b,b,b,n,b,l,n|...],[b,b,b,b,n,b,n|...],[b,b,b,b,n,l|...],[b,b,b,l,n|...],[b,b,l,b|...],[b,b,n|...],[b,b|...],[...|...]|...] ? ;

no                              
*/