0

私は Prolog を学んでいますが、単純な家族のメンバーの単純な「計算」(Prolog でどのように呼び出されるかわかりません) を実行したいと考えています。

たとえば、私は持っています:

 1)father of steve is petter
 2)brother steve is john
 3)A person is a son to a Father when the brother of the person has  as father the Father

(私の頭から離れたとき、それはおかしくて完全に論理から外れているようです:))

father(steve,petter).
brother(john,steve).
father(X,Y):-brother(X,Z),father(Z,Y)).

私の質問は、ジョンの父親は誰ですか(正しい答えはペッターでしょう)

?-father(john,X).

しかし、それは常に私に偽を与えます。

4

2 に答える 2

0

解決済み:

father(steve,petter).
brother(john,steve).
whoisfather(X,Y):-brother(X,Z),father(Z,Y).
?- whoisfather(john,X).
X = petter.

それ以外の

father(steve,petter).
brother(john,steve).
father(X,Y):-brother(X,Z),father(Z,Y)).
?- father(john,X).
false.

コメントを見る

于 2012-11-03T11:17:21.230 に答える
0

を入力すると、真であるようなfather(john, X).を見つけようとすることから始まります。そのようなものは存在しないため、false を返します。Zbrother(john, Z)Z

Prologにそうすべきだと言わない限り、それbrother(steve, john)は意味しないことに注意してください。brother(john, steve)

于 2012-11-03T00:13:44.727 に答える