我需要在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.
是正确的吗?
答案 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.