3

ちょっとプロローグが初めてで、疑問に思っていました:

私はこのコードを持っているとしましょう:

component(a,b).  
component(a,c).   
component(a,d).  
component(b,e).  
component(b,f).

consistsof(X,Y):- component(X,Y); component(Y,Z). そして私は私に与える引数を作成したい :

Y = b、c、d、e、f

だから私は "a" の結果と "a" が (b,e) および (b,f) に接続されているものの結果を取得したいと考えています。あまり具体的でない場合は申し訳ありません。

4

1 に答える 1

2

推移閉包を使用します

part_of(Object, Part) :-
    component(Object, C), (Part = C ; part_of(C, Part)).

/3のセット

?- setof(C, part_of(a,C), L).
L = [b, c, d, e, f].

これには非循環グラフが必要であるか、永久にループすることに注意してください

于 2014-01-21T16:08:46.367 に答える