Solved

# Permutating a word

Posted on 2001-06-14
297 Views
I have a problem that I have not been able to solve, that is I want to take a word and return all of its permutations. So, far I have not been successful in creating such a function.

For example if a word contains 5 characters then it should return an array of 120 combinations of the letters.

Example of permutation the word ape which has only 6 permutations.
ape
aep
pae
pea
eap
epa
0
Question by:tunmire
• 3
• 2
• 2

LVL 4

Accepted Solution

beckingh earned 300 total points
ID: 6192436
0

LVL 4

Expert Comment

ID: 6192466
0

LVL 4

Expert Comment

ID: 6192470

Modified version of the code I linked to.  Add a commandbutton (Command1) a textbox (Text1) and  listbox (List1) to a form.  Then add this code.

It will add all the permutations to the listbox so you can see them.  It would be easy enough to add them to an array.

Sub Perm(A() As String, m, n As Integer)
Dim i As Integer
Dim Temp As String

If m = 1 Then
PrintPerm A, n 'Print out the permutations

Else

For i = 1 To m
Temp = A(i)
A(i) = A(m) 'Exchange A(i) and A(m), could have made a Sub To Do this
A(m) = Temp
Perm A, m - 1, n 'Recursive Function call
Temp = A(m)
A(m) = A(i) 'Exchange A(m) and A(i)
A(i) = Temp
Next i
End If
End Sub

Private Sub Command1_Click()
Dim strArray() As String
Dim llLoop As Integer
Dim llLength As Integer
llLength = Len(Text1.Text)
ReDim strArray(llLength)

For llLoop = 1 To llLength
strArray(llLoop) = Mid(Text1.Text, llLoop, 1)
Next

Perm strArray(), llLength, llLength
End Sub

Public Sub PrintPerm(A() As String, n As Integer)
Dim i As Integer
Dim strVar As String

List1.Clear

For i = 1 To n
strVar = strVar & (A(i))
Next i

End Sub
0

LVL 18

Expert Comment

ID: 6192501
good thing i checked back in before i started doing it from scratch...  let us know if beckingh's solution isn't sufficient (but i don't see why it wouldn't be)
0

LVL 8

Expert Comment

ID: 6192820

http://www.experts-exchange.com/jsp/qShow.jsp?qid=20094203

Good Luck...
0

LVL 8

Expert Comment

ID: 6192822
This example will do the trick...

0

LVL 18

Expert Comment

ID: 6192884
nice one ajay!  where ya been?

now that i look at the question, this definitely looks like a homework...  oh well, his loss (tunmire's).

0

## Featured Post

Introduction While answering a recent question (http://www.experts-exchange.com/Q_27402310.html) in the VB classic zone, I wrote some VB code in the (Office) VBA environment, rather than fire up my older PC.  I didn't post completely correct code o…
When trying to find the cause of a problem in VBA or VB6 it's often valuable to know what procedures were executed prior to the error. You can use the Call Stack for that but it is often inadequate because it may show procedures you aren't intereste…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…