Generar todos los subconjuntos "únicos" de un conjunto (no un conjunto de potencia)

Digamos que tenemos un SetS que contiene algunos subconjuntos:

- [a,b,c]
- [a,b]
- [c]
- [d,e,f]
- [d,f]
- [e]

Digamos también que S contiene seis elementos únicos:a, b, c, d, e yf.

¿Cómo podemos encontrar todos los subconjuntos posibles deS que contienen cada uno de los elementos únicos deS ¿Exactamente una vez

El resultado de la función / método debería ser algo así:

[[a,b,c], [d,e,f]];[[a,b,c], [d,f], [e]];[[a,b], [c], [d,e,f]];[[a,b], [c], [d,f], [e]].

Existe alguna mejor práctica o alguna forma estándar de lograrlo?

Agradecería un ejemplo de pseudocódigo, Ruby o Erlang.

Respuestas a la pregunta(10)

Su respuesta a la pregunta