2016-12-15 14 views
0

check_entries(X、Y)の定義がある場合は、2つのリストを再帰的にチェックし、それらのリストを反復し、各要素を比較してそれらが異なっているかどうかを確認する最良の方法は誰にも分かりますか?私はどこかで= \ =演算子を使用することを知っていますが、他に何ができるかわかりません...Prologで2つのリストの各要素が再帰的にどのようにチェックされていますか?

助けてください、ありがとう。再帰は私の弱点です:-(。

より具体的には、各インデックスでL1、L2の2つのリストがすべて異なることを確認する方法です。 = \ =不平等をチェックするために使用する

+0

1.あなたが求めているものは明らかではありません。あなたはよりよく説明する必要があります(より明確に)。 2.アルゴリズムを偽コードで反復的に書いた場合、ソリューションの計画が何であるかを知ることがずっと簡単になります。あなたの質問を編集してください! –

+0

詳細を追加しました。 – F1R3

+0

チュートリアルとPrologのドキュメントをお読みになりましたか? –

答えて

0

再帰は必要ありません:。

all_different(L1, L2) :- forall(member(X, L1), \+ memberchk(X, L2)). 

編集:確かに、あなたの質問は、あなたが1ずつアップリストと一致している場合ことを確認するために実際にあります - これらは違います:[1,2,1][2,1,2]

私はあなたがことができると思いますけれども、私はまだ、再帰を気にしないでしょう。

all_different(L1, L2) :- maplist(=\=, L1, L2). 
+1

わかりやすくするために、2つのリストが要素を共有していない場合(「共用体」は空集合)、これは成功します。これはOPが尋ねているものであるかどうかはっきりしていない:) BTW、両方のリストは、これが意図したとおりに動作するようにする必要があります。 –

+0

これは正しく動作しているとは思わない。それは単に「はい」を返します。私が知りたいのは、L1、L2の2つのリストがそれぞれのインデックスごとに異なることを確認する方法です。また、不平等をチェックするために= \ =を使う方法も知りたいです。 – F1R3

+0

再帰せずに=/=演算子を使用する方法があれば、それでも問題ありません。ありがとう。 – F1R3

関連する問題