Prolog - 计算世代数的关系

时间:2014-06-19 17:47:34

标签: prolog

我需要在Prolog中创建关系“生成”,它计算两个人之间有多少代。

例如 - 如果:父亲(a,b)和父亲(b,c)那么a和c之间有2代。

(父亲(a,b)= a是b的父亲,母亲(a,b)= a是b的母亲

因此,生成(a,c,N)将返回2.

generation (X,Y,N1):- father(Z,Y), generation(Z,Y,N2), N1 is N2+1.
generation (X,Y,N1):- mother(Z,Y), generation(Z,Y,N2), N1 is N2+1.

是正确的吗?

1 个答案:

答案 0 :(得分:1)

您还需要直接关系规则:

generation(X, Y, 1):- father(X, Y), !.
generation(X, Y, 1):- mother(X, Y), !.

另一条规则应更正为:

generation(X, Y, N1):- father(X, Z), generation(Z, Y, N2), N1 is N2+1.
generation(X, Y, N1):- mother(X, Z), generation(Z, Y, N2), N1 is N2+1.