始める前に、ここに問題があります。
List Xs = [1,2,3] と List Ys = [2,3,4] の例があります。これら 2 つのリストの 2 つの共通要素メンバーは [2,3] です。したがって、述語setIntersection(Xs, Ys, Zs)を作成しようとしています。結果のリスト ( [2,3] ) は Zs にバインドされます。Prolog 言語を使用してこれを実行しようとしています。 Windows 上の ECLiPSe プログラムで実行され、ループ反復子 NO RECURSIONを使用する必要があります。
これが私がこれまでに持っているコードです:
setIntersection(Xs, Ys, Zs) :-
( foreach(Alpha, Xs), fromto([Ys], [Head|Tail], Tail, []), foreach(Bravo, Ys)
do
( (Alpha =:= Head)
-> Bravo = Head;
fail
)
).
私が持っているコードの別のバージョンはこれです:
setIntersection(Xs, Ys, Zs) :-
( foreach(Alpha, Xs), param(Ys, Zs)
do
( foreach(Bravo, Ys), foreach(Charlie, Zs), param(Alpha)
do
( ( Alpha =:= Bravo)
-> Charlie is Alpha;
!
)
)
).
結果 (2 番目のコードから):
?- setIntersection([1,2,3], [2,3,4], X).
X = [2, 3, _412]
Yes (0.00s cpu)
私が得た結果は、上記のコードでは非常に奇妙です。
この問題で私を助けてください、私はとても感謝しています。ありがとうございました!