Gere todos os subconjuntos “únicos” de um conjunto (não um conjunto de energia)

Digamos que temos um SetS que contém alguns subconjuntos:

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

Digamos também que S contém seis elementos únicos:a, b, c, d, e ef.

Como podemos encontrar todos os subconjuntos possíveis deS que contêm cada um dos elementos exclusivos deS exatamente uma vez?

O resultado da função / método deve ser algo assim:

[[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 alguma prática recomendada ou alguma maneira padrão de conseguir isso?

Seria grato por um exemplo de pseudo-código, Ruby ou Erlan

questionAnswers(5)

yourAnswerToTheQuestion