私はPrologのファミリーツリーのさまざまな実装を見てきましたが、お互いを参照して子と親を定義することをやりたいものは見つかりませんでした。 私は時々私は誰かが誰かの子供であるという事実を持っているので、私は誰かの親であるという事実を持っているので、これをしたいと思います。このような事実のいずれかから、私は両親と誰が子供であるかを聞くことができるようになりたいと思います。このコーディングでファミリーツリーの相互参照Prologルール
私の試みは、次のとおりです。 -
parent(mary, fred).
child(john, peter).
child(paul, peter).
parent(P, C).
parent(P, C) :- child(C, P).
child (C, P).
child(C, P) :- parent(P, C).
これは、それは私に何度も重複して同じ結果を与えることを続けることを除いて、[OK]を動作するようです。例: -
[3] ?- parent(peter, X).
true ;
X = john ;
X = paul ;
true ;
X = john ;
X = paul ;
true
私に結果を一度与えてから停止する方法はありますか?
より一般的に、この種の定義は(相互再帰のために)したい奇妙なことですか?私は報告されているように、親または子のどちらかの事実を持つことができたいと思っていますが、これらとの "反対の"関係も推測することができます。
ありがとうございます!
完璧!ありがとう:) – guraaku