1
私は、最大3つの事実を使用してPrologと作業する単純なファミリーツリーを取得しようとしていますが、私の姉妹を私の両親の子として定義することはできないようです。ここで私が書いたものである:SWI-Prologのファミリーツリー
father(dad,me).
mother(mom,me).
siblings(me,sis).
parents(X,Z):-father(X,Z).
parents(Y,Z):-mother(Y,Z).
child(Z,X):-siblings(Z,Z2),parents(X,Z).
child(Z,Y):-siblings(Z,Z2),parents(Y,Z).
child(Z2,X):-siblings(Z,Z2),parents(X,Z).
child(Z2,Y):-siblings(Z,Z2),parents(Y,Z).
son(Z,X):-siblings(Z,Z2),parents(X,Z).
daughter(Z2,X):-siblings(Z,Z2),parents(X,Z).
brother(Z,Z2):-siblings(Z,Z2).
sister(Z2,Z):-siblings(Z,Z2).
を、私はPrologでfather(ZFather,ZChild)
に入力すると、それが唯一の子ではなく、私のsis
としてme
示しています。私は事実でそれを定義していないことを知っていますが、child(Z2,X)
とchild(Z2,Y)
という規則では、Z2
が私のsis
であることを意味しています。
お手数をおかけします。