2012-01-02 1 views
-3

프롤로그에 코드가 필요합니다.프롤로그의 코드는 동일한 세대를 가진 두 사람을 찾을 수 있습니까?

가계도에서 일부 사람을 정의한다고 가정 해 봅니다.

세대가 같고 조상이 동일한 경우 두 명이 이름과 프로세스를 갖는 함수를 작성하려면 어떻게해야합니까?

parent(chester,irvin). 
parent(chester,clarence). 
parent(chester,mildred). 
parent(irvin,ron). 
parent(irvin,ken). 
parent(clarence,shirley). 
parent(clarence,sharon). 
parent(clarence,charlie). 
parent(mildred,mary). 


male(chester). 
female(mildred). 
male(irvin). 
female(shirley). 
male(clarence). 
female(sharon). 
male(ron). 
female(mary). 
male(ken). 
male(charlie). 



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

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

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

paternalgrandfather(X,Y) :- father(X,Z), father(Z,Y). 

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

brothers(X,Y) :- sibling(X,Y),male(X),male(Y), \+ (X=Y). 

samegeneration(x,y) :- HERE I DONT KNOW WHAT TO DO 
+1

소리가 숙제입니까? 그렇다면 그렇게 말하십시오. – Cocowalla

+0

예, 저는 삼목과 할아버지를 찾기 위해 패밀리 트리와 함수를 작성했지만, 제 세대의 함수는 무한 루프로 진행됩니다. 시도했지만 시도 할 수 없습니다! : ( –

+0

그것은 무한 루프로 진행됩니까? 확실히 당신이 쓴 것을 의미합니다. – m09

답변

0

브레이크를 아래로 : 같은 부모가 당신의 기본 경우 것 가지고 어디에 두 사람이 공통 조상을 가진에 대한 술어로 시작합니다. 그런 다음 그 공통 조상으로부터 각 세대가 얼마나 많은 세대인지를 추적하기 위해 그것을 강화하십시오. 한 단계 더 (운동으로 남음), 끝났습니다!