Вот вопрос о перестановках и комбинациях - PullRequest
0 голосов
/ 25 марта 2020

(заранее извиняюсь, если проблема уже решена, я новичок в python)

Мне нужно уменьшить список всех перестановок с диапазоном (1, N) с устранением из под-комбинаций элементов, взятых в подгруппах M, где внутри подгрупп положение не имеет значения.

Например, я сгенерировал всю перестановку с помощью этой процедуры

with open('Permutation.txt') as wf:
     for p in permute(range (1, 4)):    
         s = (str(p))[1: -1]
         wf.write (s)
         wf.write ('\n')



1, 2, 3, 4
1, 2, 4, 3
1, 3, 2, 4
…
2, 1, 3, 4
2, 1, 4, 3
…
3, 1, 4, 2
…
4, 3, 1, 2
4, 3, 2, 1

Для каждого массива я сгруппировал комбинацию по M = двум компонентам:

(1, 2), (3, 4)
(1, 2), (4, 3)
(1, 3), (2, 4)
…
(2, 1), (3, 4)
(2, 1), (4, 3)
…
(3, 1), (4, 2)
…
(4, 3), (1, 2)
(4, 3), (2, 1)

Теперь мне нужно удалить (или не создавать) массив, где внутри подгрупп есть те же компоненты, например:

(1, 2), (3, 4)  - a
(1, 2), (4, 3)  - a
(1, 3), (2, 4)  - b
…
(2, 1), (3, 4)  - a
(2, 1), (4, 3)  - a
…
(3, 1), (4, 2)  - b
…
(4, 3), (1, 2)  - c
(4, 3), (2, 1)  - c

и результат должен быть:

(1, 2), (3, 4)  - a
(1, 3), (2, 4)  - b
(4, 3), (1, 2)  - c
...