Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- rider(girl(daisy)). rider(girl(stella)). rider(boy(jim)).
- cause(fell). cause(buckled). cause(punctured).
- local(hospital). local(library). local(river).
- % 0="last" , 1="2nd from last", 2="3nd from last"
- place(0). place(1). place(2).
- unique([]).
- unique([X|Xs]) :- \+ memberchk(X,Xs),unique(Xs).
- gen_sets(S1,S2,S3) :-
- rider(R1),rider(R2),rider(R3),unique([R1,R2,R3]),
- cause(C1),cause(C2),cause(C3),unique([C1,C2,C3]),
- local(L1),local(L2),local(L3),unique([L1,L2,L3]),
- place(P1),place(P2),place(P3),unique([P1,P2,P3]),
- S1=(R1,C1,L1,P1),S2=(R2,C2,L2,P2),S3=(R3,C3,L3,P3).
- r1(Solution) :- \+ member((girl(_),fell,_,_),Solution).
- r2(Solution) :-
- findall(X,place(X),Placelist),
- max_list(Placelist,DaisyPlace),
- member((girl(daisy),_,_,DaisyPlace),Solution).
- r3(Solution) :-
- findall(X,place(X),Placelist),
- min_list(Placelist,LastPlace),
- RiverPlace is LastPlace+1,
- member((_,_,river,RiverPlace),Solution).
- r4(Solution) :-
- member((girl(stella),buckled,library,_),Solution).
- solve(Solution) :-
- length(Solution,3),
- gen_sets(
- (R1,C1,L1,P1),
- (R2,C2,L2,P2),
- (R3,C3,L3,P3)),
- member((R1,C1,L1,P1),Solution),
- member((R2,C2,L2,P2),Solution),
- member((R3,C3,L3,P3),Solution),
- r1(Solution), r2(Solution),
- r3(Solution), r4(Solution), !.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement