グラフからリストを取得したいと思います。 2文字の変数は点で、1文字は線です。各行には複数のポイントを含めることができます。Prologは異なる関係からリストを取得します
conn(bs, oc, c).
conn(oc, tc, c).
conn(bs, gp, j).
conn(gp, cc, j).
conn(gp, pc, p).
conn(pc, ls, p).
conn(gp, oc, v).
conn(oc, pc, b).
conn(pc, cc, b).
conn(tc, ls, n).
conn(ls, cc, n).
link(X, Y, Z) :- conn(X, Y, Z), !.
link(X, Y, Z) :- conn(Y, X, Z).
ここで、ラインに属するすべてのポイントを含むリストを取得したいとします。入力して:
は、私は、これは私が私の結果を取得しようとしました方法です
X = [bs, oc, tc]
期待:
getpoints(Line, [First|[]]) :- not(link(First, _Second, Line)).
getpoints(Line, [First|Rest]) :- link(First, _Second, Line), getpoints(Line, Rest).
誰もがアイデアを持っていますか?
私は最初のリレーションズに欠けているポイントがありますが、私はもう投稿を編集できません。しかし、私は正しい構文でそれを試しました:-) –
ポイントは、 'conn'のために追加されました。 – max66