2

いくつかのベクトルがありますa=[1 2 3 ...], b=[1 2 3 ...], c=[1 2 3 ...]. 次のように、これらの各ベクトルから取得した要素から構成されるすべての可能な組み合わせを見つける必要があります。

[1 1 1]
[1 1 2]
[3 3 3]
etc.

問題は、順序は関係ないため、同じ要素を含む組み合わせを除外する必要があることです。たとえば、組み合わせ[1 2 1]が提示されている場合、その組み合わせ[2 1 1]は除外する必要があります。任意のプログラミング言語でそれを行うにはどうすればよいですか (python が推奨されます)。

4

2 に答える 2

2

あなたの要件を完全に理解しているかどうかはわかりませんが、itertoolsが役立つことに気付くかもしれません。

例えば:

from itertools import combinations_with_replacement as cr
for a in cr([1,2,3],3):
   print a

版画

(1, 1, 1)
(1, 1, 2)
(1, 1, 3)
(1, 2, 2)
(1, 2, 3)
(1, 3, 3)
(2, 2, 2)
(2, 2, 3)
(2, 3, 3)
(3, 3, 3)
于 2013-06-04T17:28:51.377 に答える
1

効率をそれほど気にしないのであれば、これでうまくいくかもしれません。

from itertools import product

def specialCombinations(*vectors):
  return {tuple(sorted(i)): i for i in product(*vectors)}.values()

入力ベクトルのデカルト積を取り、順列の下で同等のものをフィルタリングします。

于 2013-06-04T18:05:51.520 に答える