Imports System
Imports System.Collections.Generic
Public Class PermutationsOfWordsWithoutRepetition_VB_NET
Public Shared Sub Main()
Dim words As String() = {"word-1", "word-2", "word-3", "word-4"}
Dim result = GeneratePermutations(words, 0, words.Length - 1)
For Each permutation In result
Console.WriteLine(String.Join(" ", permutation))
Next
End Sub
Public Shared Function GeneratePermutations(ByVal words As String(), ByVal start As Integer, ByVal [end] As Integer) As List(Of String())
Dim result = New List(Of String())()
If start = [end] Then
result.Add(CType(words.Clone(), String()))
Else
For i As Integer = start To [end]
Swap(words(start), words(i))
result.AddRange(GeneratePermutations(words, start + 1, [end]))
Swap(words(start), words(i))
Next
End If
Return result
End Function
Public Shared Sub Swap(ByRef a As String, ByRef b As String)
Dim temp As String = a
a = b
b = temp
End Sub
End Class
' run:
'
' word-1 word-2 word-3 word-4
' word-1 word-2 word-4 word-3
' word-1 word-3 word-2 word-4
' word-1 word-3 word-4 word-2
' word-1 word-4 word-3 word-2
' word-1 word-4 word-2 word-3
' word-2 word-1 word-3 word-4
' word-2 word-1 word-4 word-3
' word-2 word-3 word-1 word-4
' word-2 word-3 word-4 word-1
' word-2 word-4 word-3 word-1
' word-2 word-4 word-1 word-3
' word-3 word-2 word-1 word-4
' word-3 word-2 word-4 word-1
' word-3 word-1 word-2 word-4
' word-3 word-1 word-4 word-2
' word-3 word-4 word-1 word-2
' word-3 word-4 word-2 word-1
' word-4 word-2 word-3 word-1
' word-4 word-2 word-1 word-3
' word-4 word-3 word-2 word-1
' word-4 word-3 word-1 word-2
' word-4 word-1 word-3 word-2
' word-4 word-1 word-2 word-3
'