Wie kann man die Potenz einer gegebenen Liste erzeugen?

Ich versuche, eine Sammlung aller 2 ^ N - 1 möglichen Kombinationen einer gegebenen Liste von Längen N zu erzeugen. Die Sammlung ordnet die Anzahl der Elemente in einer Kombination einer geordneten Liste von Kombinationen zu, die Kombinationen der spezifischen Länge enthalten. Zum Beispiel für die Liste:

[A, B, C, D]

Ich möchte die Map generieren:

{
    1 -> [{A}, {B}, {C}, {D}]
    2 -> [{A, B}, {A, C}, {A, D}, {B, C}, {B, D}, {C, D}]
    3 -> [{A, B, C}, {A, B, D}, {A, C, D}, {B, C, D}]
    4 -> [{A, B, C, D}]
}

Die generierte Datenbank sollte die ursprüngliche Reihenfolge beibehalten (wo[] repräsentiert eine geordnete Serie (List), und{} repräsentiert eine ungeordnete Gruppe (Set)) und laufe so schnell wie möglich.

Ich hatte den ganzen Tag mit rekursivem Code zu kämpfen (ich weiß, dass die Implementierung rekursiv sein sollte), konnte aber nicht den Grund dafür finden.

Gibt es eine Referenz, die ich verwenden kann / eine fertige Implementierung eines solchen Algorithmus?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage