2

リストのリストがあるとします

L= [[1,2,3], [3,2,1],[2,1,2],[3,1,2], [1,2,2]].

ご覧のとおり、 [1,2,3]、 、[3,2,1]および[3,1,2]は互いの順列です。 また、互いの順列でもあります[2,1,2][1,2,2]

私の目標は、リスト内の要素のすべての順列を削除することです。結果リストは次のようになります。

L'=[[1,2,3],[2,1,2]].

これまでの私の考えは、 member(X,L) を使用してリスト内の要素を見つけ、 を使用permutation(X,Xperm)して の順列を取得し、にあるXかどうかを確認XpermL、そうであれば削除することです。

しかし、結果は私が望んでいたものではないことがわかりました。

誰でも私を助けることができますか?

4

2 に答える 2

0

最後に Prolog で何かをしたのは 20 年以上前なので、Prolog 固有のことは何も覚えていません。

ただし、関数に適した言語でこれを行う場合は、大きなリスト内のすべてのサブリストを並べ替えてから、すべての重複を削除します。

于 2013-11-02T20:20:53.827 に答える