问题
试编写一个描述亲属关系的PROLOG程序,然后给出一些事实数据,建立一个小型演绎数据库。
代码实现
% 基本事实
father(john, mike).
father(john, lisa).
father(boluo, ana).
father(boluo, peter).
mother(mary, mike).
mother(mary, lisa).
mother(linda, ana).
mother(linda, peter).
% 性别定义
male(john).
male(boluo).
male(mike).
male(peter).
female(mary).
female(linda).
female(lisa).
female(ana).
% 基本规则
% 定义兄弟姐妹关系的辅助规则
sibling(X, Y) :-
father(Z, X), father(Z, Y),
mother(W, X), mother(W, Y),
X \= Y.
% 兄弟
brother(X, Y) :-
sibling(X, Y),
male(X).
% 姐妹
sister(X, Y) :-
sibling(X, Y),
female(X).
% 祖父
grandfather(X, Y) :-
father(X, Z), (father(Z, Y); mother(Z, Y)).
% 祖母
grandmother(X, Y) :-
mother(X, Z), (father(Z, Y); mother(Z, Y)).
% 叔叔
uncle(X, Y) :-
brother(X, Z), (father(Z, Y); mother(Z, Y)).
% 姑妈
aunt(X, Y) :-
sister(X, Z), (father(Z, Y); mother(Z, Y)).
运行结果截图
注
因上面代码较为简单,此处不做过多的赘述。
希望本文能对您所有帮助!感谢阅读。