Выведите все возможные комбинации количества символов «X» с длиной строки «X» (грубая сила)

Я пытаюсь написать генератор словосочетаний, я имею в виду напечатать все возможные комбинации количества символов "X" с длиной строки "X",

Прежде всего мне нужно сказать, что я видел вопрос в StackOverFlow именно об этой проблеме, у которой есть много ответов генераторов слов, чтобы выполнить это точно (на разных языках), но, пожалуйста, не помечайте это как дубликат или не делайте Прокомментируйте мой вопрос только для ссылки на эту ссылку, потому что я проверил ВСЕ коды C # и VBNET этого вопроса, и на самом деле ни один из них не работает на 100%, как ожидалось, посмотрите комбинации, которые мне нужны:

Например, если у меня есть символы «a», «b» и «c», и я хочу сделать все комбинации этих символов в строке длиной «3», то это ожидаемый результат:

' Expected result, 27 combinations:
'
' aaa
' aab
' aac
'
' aba
' abb
' abc
'
' aca
' acb
' acc
'
' baa
' bab
' bac
'
' bba
' bbb
' bbc
'
' bca
' bcb
' bcc
'
' caa
' cab
' cac
'
' cba
' cbb
' cbc
'
' cca
' ccb
' ccc

(Сортировка не имеет значения, я могу отсортировать позже.)

... Но пока что ожидаемый результат, это то, что я мог бы получить:

'a
'aa
'aaa
'b
'bb
'bbb
'c
'cc
'ccc

Я сделал это на двух языках (Ruby и Batch), но с использованием вложенных Fors (много Fors вместе каждый для добавления только одной буквы к другому для вывода), конечно, если я пытаюсь сделать это в VBNET чтобы избежать судебного преследования многих из Форса, и сделать это в лучшем исполнении.

В приведенном ниже коде вы можете увидеть, как я пытаюсь выделить все комбинации в оперативной памяти (массиве) вместо записи их на физический диск, поэтому я хочу записать этот код с использованием логического метода и с лучшей производительностью, затем Я хочу сначала сохранить все комбинации «в памяти», и это также причина, почему я не хочу использовать много форов (производительность).

Это была моя последняя попытка, все объясняется в комментариях:

Public Class Form1

    Dim characters As Char()  ' Default value: {"a","b","c"}
    Dim StringLength As Int64 ' Default value: 3
    Dim TotalCombinations As Int64 ' Default value: 27
    Dim strarray(99999999) As String ' Default size: "99.999.999" million of combinations in memory (I need to confirm this from an expert).

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    Dim index As Int64 = 0

    For column As Int64 = 0 To TotalCombinations - 1 ' For 0 to 26

        For Each character As Char In characters ' Characters = {"a","b","c"}

            If column < index Then
                index = 0 ' I reset index value 'cause... just experimenting things.
                Try
                    strarray(index) += characters(index)
                    RichTextBox1.Text += strarray(index) & ControlChars.NewLine
                Catch
                End Try
            Else
                Try
                    strarray(index) += characters(index)
                    RichTextBox1.Text += strarray(index) & ControlChars.NewLine
                Catch
                End Try
            End If
        Next

        index += 1

    Next

    End Sub

    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        characters = sender.text.ToCharArray ' Result: {"a","b","c"}
        Calculate_Combinations() ' Result: 27
    End Sub

    Private Sub NumericUpDown1_ValueChanged(sender As Object, e As EventArgs) Handles NumericUpDown1.ValueChanged
        StringLength = sender.value ' Result: 3
        Calculate_Combinations() ' Result: 27
    End Sub

    Private Sub Calculate_Combinations()
        Try
            TotalCombinations = ((characters.LongLength * StringLength) * StringLength) ' Result: 27
            Label1.Text = ((characters.LongLength * StringLength) * StringLength) & " number of combinations." ' Result: 27
        Catch : End Try
    End Sub

End Class

Я точная помощь.

Ответы на вопрос(2)

Ваш ответ на вопрос