1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| initial( [h,h,h,b,b,b] ).
final( [b,b,b,h,h,h] ).
opF( L1, r1, L2) :- remp([h,h], [b,b], L1, L2).
opF( L1, r2, L2) :- remp([h,b], [b,h], L1, L2).
opF( L1, r3, L2) :- remp([b,h], [h,b], L1, L2).
opF( L1, r4, L2) :- remp([b,b], [h,h], L1, L2).
remp(S1, S2, L1, L2) :- append(Tmp1, LSuffixe, L1), append(LPrefixe, S1, Tmp1),
append(LPrefixe, S2, Tmp2), append(Tmp2, LSuffixe, L2).
rechPf1(Ef,Ef, Lei, []) :- !,print(Lei).
rechPf1(Ec, Ef, Lei, [Opx|Lop]) :- opF(Ec, Opx, Es), not( member(Es, Lei)), rechPf1(Es, Ef, [Es| Lei] , Lop).
resoudre1(S) :- initial(Ei), final(Ef), rechPf1(Ei, Ef, [Ei], S). |
Partager