Einzigartige Set-Kombination

Ich versuche, vb.net-Code zu schreiben, um eindeutige Kombinationen für Satz zurückzugeben. Mein Satz enthält 3 verschiedene Elemente. Ich habe einen ähnlichen Beitrag in diesem Beitrag gefunden, konnte aber keine VB-Lösung finden, um diese Ergebnisse zu erhalten

Beispiel:

Elemente: 1, 2, 3

{1, 2, 3}

Ergebnis muss sein

1
2
3
12
13
23
123
...........
>...................

Ich versuche, dies zu erreichen, indem ich folgenden Code verwende

Function GetCombinations(ByVal depth As Integer, ByVal values As String()) As IEnumerable(Of String)
    If depth > values.Count + 1 Then Return New List(Of String)
    Dim result = New List(Of String)

    For i = 0 To depth - 1
        For y = 0 To values.Count - 1
            If i = 0 Then
                result.Add(values(y))
            Else
                result.Add(values(i - 1) + values(y))
            End If
        Next
    Next
    Return result
End Function

Um das Ergebnis zu erhalten

Dim reslt = GetCombinations(4, data_array)

?reslt
Count = 12
    (0): "1"
    (1): "2"
    (2): "3"
    (3): "11"
    (4): "12"
    (5): "13"
    (6): "21"
    (7): "22"
    (8): "23"
    (9): "31"
    (10): "32"
    (11): "33"

Tipp: Ich arbeite mit Mathematik und schaffe es, keine Kombinationen zu berechnen. Ich kann das mit dieser Formel testen

Beispiel gibt es diese Formel namens nCr. es bedeutet aus n Elementenzahlen, wie viele Arten es gibt, r Elemente mit eindeutigen Kombinationen von r zu nehmen.

nPr = n!/(n-r)!
n! = 1 * 2 * 3 * 4* ... (n-1) * n

Elements: 1, 2, 3
In this case n = 3 and r can be 1, 2, and 3 all

number of combinations  = 3P1 + 3P2 + 3P3
                                          = 3!/2! + 3!/1! + 3!/0!
                                          = 6/2 + 6/1 + 6/1                    (0!=1)
                                          = 3+6+6
                                          = 15 

Antworten auf die Frage(2)

Ihre Antwort auf die Frage