Prolog:X 是 Y 的祖父

问题描述 投票:0回答:4

假设以下事实已输入 Prolog 数据库中:

father(X, Y)     // X is the father of Y
mother(X, Y)     // X is the mother of Y
male(X)          // X is a male
female(X)        // X is a female
parent(X, Y)     // X is a parent of Y
diff(X, Y)       // X and Y are different

(1) 现在为 grandpa_of(X, Y) 添加一条 Prolog 规则,其中“X 是 Y 的祖父”

(2) 为sibling(X, Y)添加另一个规则,其中“X是Y的兄弟”

我的想法:

问题1:

我很困惑如何才能找到父母的父母,到目前为止我所拥有的只是

(X,Y)的爷爷:-男(X),...

问题2:

兄弟姐妹(X,Y):- 父母(P,X),父母(P,Y),差异(X,Y)

prolog
4个回答
6
投票

我认为杰森的意思是

grandpa_of(X,Y) :- father(X,P), parent(P,Y).


2
投票

已经很久了...第一个是这样的:

grandpa_of(X, Y) :- father(X, P), father(P, Y).

太久了...:-P


0
投票

Hamad 是 Bilal、Laiba 和 Marium 的父母。 阿里和莫娜是哈马德的父母。 Musarat 也是 Bilal、Laiba 和 Marium 的父母。 卡姆兰和哈维里亚是她的父母。 卡姆兰和哈维里亚也是萨尔玛和奥马尔的父母。 父母是祖先,父母也是祖先。 兄弟姐妹共享一个父母。

  1. 妈妈
  2. 兄弟
  3. 爷爷
  4. 叔叔
  5. 阿姨
male(hamad).
male(bilal).
male(ali).
male(kamran).
male(umar).

female(laiba).
female(marium).
female(mona).
female(musarat).
female(javeria).
female(salma).

parents(ali, hamad).
parents(mona, hamad).

parents(kamran, musarat).
parents(javeria, musarat).

parents(kamran, salma).
parents(kamran, umar).

parents(javeria, salma).
parents(javeria, umar).

parents(hamad, bilal).
parents(hamad, laiba).
parents(hamad, marium).

parents(musarat, bilal).
parents(musarat, laiba).
parents(musarat, marium).



mother(X, Y) :-
    parents(X, Y),
    female(X),
    write(X),
    write(' is a mother of '),
    write(Y),
    nl.

brother(X, Y) :-
    male(X),
    x \= y,
    parents(Z, X),
    parents(Z, Y),
    write(X),
    write(' is a brother of '),
    write(Y),
    nl.

sister(X, Y) :-
    female(X),
    x \= y,
    parents(Z, X),
    parents(Z, Y),
    write(X),
    write(' is a sister of '),
    write(Y),
    nl.

grandfather(X, Y) :-
    parents(X, P),
    parents(P, Y),
    male(X),
    write(X),
    write(' is grandfather of '),
    write(Y),
    nl.

uncle(X, Z) :-
    brother(X, P),
    parents(P, Z),
    male(X),
    write(X),
    write(' is an uncle of '),
    write(Z),
    nl.

aunt(X, Z) :-
    sister(X, P),
    parents(P, Z),
    female(X),
    write(X),
    write(' is an aunt of '),
    write(Z),
    nl.

-1
投票

X 是 Y 的祖父的示例程序

%knowledgebase or database

female(amrita).
 
female(aroti).

female(manusi).

female(parboti).

male(susanta).

male(prasanta).

male(haran).

male(ratan).

male(srijit).

%clause 

parent(manusi,susanta).

parent(ratan,amrita).

parent(aroti,amrita).

parent(haran,prasanta).

parent(haran,susanta).

parent(manusi,prasanta).

parent(susanta,srijit).

%rules

mother(X,Y):-parent(X,Y),female(X).

father(X,Y):-parent(X,Y),male(X).

sister(X,Y):-female(X),x\==y,parent(Z,X),parent(Z,Y).

brother(X,Y):-male(X),x\==y,parent(Z,X),parent(Z,Y).

grandparent(X,Y):-parent(X,Y),parent(Y,Z).

grandmother(X,Y):-mother(X,Y),parent(Y,Z).

grandfather(X,Y):-father(X,Y),parent(Y,Z).
© www.soinside.com 2019 - 2024. All rights reserved.