Мне нужна функция, которая может разбить последовательность на пары, а затем объединить их так, чтобы все элементы в комбинации были уникальными. Я пробовал несколько подходов, используя python's itertools, но не нашел решения.Разбиение последовательности на множества уникальных пар
В качестве иллюстрации я хотел бы функцию, которая будет принимать эту последовательность: [1, 2, 3, 4]
и разделить его на следующие 3 комбинаций:
[[1, 2], [3, 4]]
[[1, 3], [2, 4]]
[[1, 4], [2, 3]]
он должен также работают для более длинных последовательностей, но не должны обрабатывать последовательности нечетной длины. например.
[1,2,3,4,5,6]
распадается на следующие 15 комбинаций:
[[1, 2], [3, 4], [5, 6]]
[[1, 2], [3, 5], [4, 6]]
[[1, 2], [3, 6], [4, 5]]
[[1, 3], [2, 4], [5, 6]]
[[1, 3], [2, 5], [4, 6]]
[[1, 3], [2, 6], [4, 5]]
[[1, 4], [2, 3], [5, 6]]
[[1, 4], [2, 5], [3, 6]]
[[1, 4], [2, 6], [3, 5]]
[[1, 5], [2, 3], [4, 6]]
[[1, 5], [2, 4], [3, 6]]
[[1, 5], [2, 6], [3, 4]]
[[1, 6], [2, 3], [4, 5]]
[[1, 6], [2, 4], [3, 5]]
[[1, 6], [2, 5], [3, 4]]
... и так далее.
CAS, называемый Maple, выполняет эту функцию под именем setpartition.
Редактировать: исправлена критическая ошибка ввода в конце поздней ночи, указанная wks, и уточненные выходы.
Вы имели в виду [[1,2], [3,4]]? – wks
Да, я, должно быть, очень устал. – FrederikNS