2012-01-02 5 views
-3

プロローグにコードが必要です。プロローグ内のコードは何ですか?同じ世代の2人の人を見つけることができますか?

家系内の人をいくつか定義したとします。

世代が同じで、同じ祖先の人がいる場合、2人の名前とプロセスを取得する関数を作成するにはどうすればよいですか?

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
それを打破

:同じ親を持つことは、あなたのベースケースとなり、共通の祖先を持つ二人のための述語で始まります。そして、その共通の祖先から各人が何世代にいるかを追跡するためにそれを強化します。 1つのステップ(これは練習として残されています)が完了しました!

関連する問題