family(father).
family(mother).
family(son).
family(daughter).
%定义性别
sex(father,m).
sex(mother,f).
sex(son,m).
sex(daughter,f).
%定义年纪长幼
elder(father,son).
elder(father,daughter).
elder(mother,son).
elder(mother,daughter).
%父亲年纪最大
oldest(father).
%定义什么是最年轻
youngest(X):-
family(X),
elder(_,X),
\+ elder(X,_).
solve:-
%排列出凶手、被害者、帮凶、目击者的组合。
(family(Xiongshou),family(Beihaizhe),family(Bangxiong),family(Mujizhe)),
(Xiongshou\=Beihaizhe,Xiongshou\=Bangxiong,Xiongshou\=Mujizhe),
(Beihaizhe\=Bangxiong,Beihaizhe\=Mujizhe),
(Bangxiong\=Mujizhe),
%以下每行都是一个已知条件
(sex(Bangxiong,X1),sex(Mujizhe,Y1),X1\=Y1),
(oldest(A),sex(A,X2),X2\=Y1),
(youngest(Z),sex(Z,X3),sex(Beihaizhe,Y3),X3\=Y3),
elder(Bangxiong,Beihaizhe),
Z\=Xiongshou,
%输出结果
write(xiongshou:Xiongshou),nl,
write(beihaizhe:Beihaizhe),nl,
write(bangxiong:Bangxiong),nl,
write(mujizhe: Mujizhe),nl.
%%%%%%%运行结果%%%%%%%%
% ?-solve
% xiongshou : mother
% beihaizhe : son
% bangxiong : father
% mujizhe : daughter
2017年08月22日 05点08分
4