2013-04-05 12 views
0

저는 프롤로그를 처음 사용하는데 조언을 빌리고 싶습니다. 프롤로그의 부모님

나는 몇 가지 사실이 있습니다

male(tom). 
male(james). 
male(john). 
female(elly). 
female(joanne). 
female(evonne). 
brother(john,tom). 
brother(john,joanne). 
sister(elly,joanne). 
parent_of(evonne,john). 
parent_of(james,john). 

인가는 sisterbrother를 사용하지 않고 parent_of 규칙을 정의 할 수있다?

+1

[Prolog 부모 관계 만 가능한 형제 자매 규칙] (http://stackoverflow.com/questions/15714834/prolog-parent-relation-using-only-brother-and-sister-rules) –

+0

하나는 형제, 배우자, 아들, 딸, 아버지와 어머니의 규칙을 정의해야 그게 내가 원하는 바보를 사용하는 자매와 동생을 사용하고 있습니다. – user1771844

답변

0

처음에 부모 관계의 핵심으로 몇 가지 parent_of 개의 사실이 있어야합니다. 자녀를 부모로서 또는 부모로서 사실 중 하나에 누군가를 붙임으로써이 관계를 확장시킬 수 있습니다. 따라서 자녀를 첨부하려면 siblings/2 규칙을 사용해야하고, 부모를 첨부하려면 couples/2 규칙을 사용해야합니다.

 
%if you want to attach a child by 'siblings' relation 
parent_of_rule(X, Y) :- 
     parent_of(X, Z), 
     siblings(Z, Y). 
 
%if you want to attach a parrent by 'couples' relation 
parent_of_rule(X, Y) :- 
     parent_of(Z, Y), 
     couples(X, Z). 

는 내가 그것을 제 3 자 관계의 사용하지 않고 parent_of_rule 규칙을 가질 수 생각하지 않습니다.

+0

나는 형제, 배우자, 아들, 딸, 아버지와 어머니의 규칙을 정의했습니다. 그러나 나는 그들 사이에 무한 루프가 발생합니다. 나는 이것을 시험해보고 갈 것이다. – user1771844

+0

지금까지 해본 내용을 복사하여 붙여 넣으십시오. – VahidM

+0

네 말이 맞아. 당신은 쉽게 전이를 허용하고 무한 루프를 피하기 위해 규칙의 이름을 변경할 수 있습니다. 당신은 또한 상처를 사용할 수 있습니다. – VahidM