permutations gone wrong
        Posted  
        
            by vbNewbie
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by vbNewbie
        
        
        
        Published on 2010-04-11T20:06:02Z
        Indexed on 
            2010/04/11
            20:13 UTC
        
        
        Read the original article
        Hit count: 407
        
I have written code to implement an algorithm I found on string permutations. What I have is an arraylist of words ( up to 200) and I need to permutate the list in levels of 5. Basically group the string words in fives and permutated them. What I have takes the first 5 words generates the permutations and ignores the rest of the arraylist? Any ideas appreciated.
Private Function permute(ByVal chunks As ArrayList, ByVal k As Long) As ArrayList
        ReDim ItemUsed(k)
        pno = 0
        Permutate(k, 1)
        Return chunks
    End Function
    Private Shared Sub Permutate(ByVal K As Long, ByVal pLevel As Long)
        Dim i As Long, Perm As String
        Perm = pString ' Save the current Perm
        ' for each value currently available
        For i = 1 To K
            If Not ItemUsed(i) Then
                If pLevel = 1 Then
                    pString = chunks.Item(i)
                    'pString = inChars(i)
                Else
                    pString = pString & chunks.Item(i)
                    'pString += inChars(i)
                End If
                If pLevel = K Then 'got next Perm
                    pno = pno + 1
                    SyncLock outfile
                        outfile.WriteLine(pno & " = " & pString & vbCrLf)
                    End SyncLock
                    outfile.Flush()
                    Exit Sub
                End If
                ' Mark this item unavailable
                ItemUsed(i) = True
                ' gen all Perms at next level
                Permutate(K, pLevel + 1)
                ' Mark this item free again
                ItemUsed(i) = False
                ' Restore the current Perm 
                pString = Perm
            End If
        Next
K above is = to 5 for the number of words in one permutation but when I change the for loop to the arraylist size I get an error of index out of bounds
© Stack Overflow or respective owner