求大神用prolog实现这个逻辑题,小白只会看,不会写
prolog吧
全部回复
仅看楼主
level 1
虎符鳝鱼 楼主
有对夫妇,生一男一女,四口之家中的一天晚上,成员中的一个杀了另一个,剩下2个成员,一个是帮凶,一个是目击者。并已知以下几个条件:
1.帮凶和目击者性别不同
2.最年长者和目击者性别不同
3.最年轻者和被害者性别不同
4.帮凶年纪比被害者大
5.父亲年纪最大
6.最年轻的不是凶手
请问凶手,被害,帮凶,目击者分别是谁?
2017年08月07日 15点08分 1
level 13
好久没用prolog了,能力有点退化了,这个题目我先看看
2017年08月08日 09点08分 2
level 1
虎符鳝鱼 楼主
大神加油啊
2017年08月08日 12点08分 3
level 13
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
1