La respuesta a esta pregunta es demasiado larga.
Su desafío es escribir una función de partición en el menor número de caracteres.
Ejemplo de entrada
['a', 'b', 'c']
Ejemplo de salida
[(('a'),('b'),('c')),
(('a', 'b'), ('c')),
(('a', 'c'), ('b')),
(('b', 'c'), ('a')),
(('a', 'b', 'c'))]
La entrada puede ser una lista / matriz / conjunto / cadena, etc., lo que sea más fácil de procesar para su función
También puede elegir el formato de salida que más le convenga siempre que la estructura sea clara.
Su función debería funcionar para al menos 6 elementos en la entrada