A resposta a esta pergunta é muito longa
Seu desafio é escrever uma função de particionamento no menor número de caracteres.
Exemplo de entrada
['a', 'b', 'c']
Exemplo de saída
[(('a'),('b'),('c')),
(('a', 'b'), ('c')),
(('a', 'c'), ('b')),
(('b', 'c'), ('a')),
(('a', 'b', 'c'))]
A entrada pode ser uma lista / matriz / conjunto / string, etc., o que for mais fácil para sua função processar
Você também pode escolher o formato de saída mais adequado, desde que a estrutura esteja limpa.
Sua função deve funcionar para pelo menos 6 itens na entrada