Prologで2人の間の曾祖父の程度を数える "greatcount"リレーションシップを作成する必要があります。たとえば、ある人が他の誰かの偉大な祖父母であれば2を返します。Prologを使用して家族関係の祖父母の数をカウントする
私はXがYの親である親(X、Y)の事実しか持ちません。
私は次のように実装され、XがYの偉大-祖父母であるかどうかを確認するために偉大な - 祖父母(X、Y)述語を追加しました:
great-grandparent(X,Y) :- parent(X,D), parent(D,F), parent(F,Y).
私はそうのような私greatcount述語実装:
greatcount(X,Y,1) :- great-grandparent(X,Y), !.
greatcount(X,Y,N1) :- great-grandparent(X,Z), greatcount(Z,Y,N2), N1 is N2+1.
を
ただし、最初の大小関係が一致しない場合、結果は常にfalse(またはNo)になります。どうして?
'( - )/ 2'は中置演算子であるため、' - (great、grandparent) 'という形式のルールを定義していることに注意してください。 – mat