すべての順列のリストを作成する必要がありますが、同じ数の符号が変更されたものは除外します。
たとえば、シーケンスから
[-2, -1, 1, 2]
次のようなすべての順列を取得します。
[-2, -1], [-2, 1], [-1, -2], [-1, 2], [1, -2], [1, 2], [2, -1], [2, 1]
現時点では、次のコードを使用しています。
permutation_items = []
permutations = itertools.permutations(range_items, items)
permutation_item = list(permutations)
たとえばrange_items = [-2, -1, 1, 2]
、items = 2
次に、私が使用するすべての反対の重複を排除するために
for element in permutation_items:
flag=0
for j in element:
if ((j in element) & ((j*-1) in element)):
flag = 1
break
if flag == 0:
all_solutions.append(element)
最初にすべての順列を含むリストを作成してから、不要なものを削除するため、これは最善の方法ではないと思います。より良い方法を提案できますか? また、10 個以上の数字で順列のリストを作成する必要がある場合、非常に大きくなるため...
これらの寸法で問題が発生すると思いますか?
注意:これらの順列では、さらに操作を行う必要があります(すべての可能な数のペアを与える順列の最小数を見つける必要があります)ので、それらを変数に格納する必要があると思います。アルゴリズム 結果をファイルに保存する必要があります。
...わかりました、あなたの答えはとても良いです。私はあなたの興味が好きです...今、変数「range_items」に 30 個の要素 (正と負) のリストを使用すると、コードで使用される時間が非常に長くなります。マルチスレッド ソリューション (多くのコアを持つクラスターにコードをロードできるようにするため) をお願いしようと考えています...実現可能ですか?