Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]() I have come across this permutation generator code. But doesn' understand it Can anybody explain how this works? where x will be the string input and y will be initially "" Sub GetPermutation(x As String, y As String) ' The source of this algorithm is unknown Dim i As Integer, j As Integer j = Len(y) If j < 2 Then Cells(CurrentRow, 1) = x & y CurrentRow = CurrentRow + 1 Else For i = 1 To j Call GetPermutation(x + Mid(y, i, 1), Left(y, i - 1) Right(y, j - i)) Next End If End Su -- chandran ----------------------------------------------------------------------- chandrans's Profile: http://www.excelforum.com/member.php...fo&userid=1436 View this thread: http://www.excelforum.com/showthread.php?threadid=27734 |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]() it's a recursive procedure. (which calls itself) NOTE the description you give of the initial arguments s/b reversed! to run it you'd call it like: Dim currentrow As Long Sub Foo() currentrow = 1 Call GetPermutation("", "ABCDEF") End Sub and it will run the 720 (=PERMUT(6,5) permutations of the letters "A thru F" -- keepITcool | www.XLsupport.com | keepITcool chello nl | amsterdam chandrans wrote in message : I have come across this permutation generator code. But doesn't understand it Can anybody explain how this works? where x will be the string input and y will be initially "" Sub GetPermutation(x As String, y As String) ' The source of this algorithm is unknown Dim i As Integer, j As Integer j = Len(y) If j < 2 Then Cells(CurrentRow, 1) = x & y CurrentRow = CurrentRow + 1 Else For i = 1 To j Call GetPermutation(x + Mid(y, i, 1), Left(y, i - 1) + Right(y, j - i)) Next End If End Sub |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
The code probably came from John Walkenbach's site:
http://j-walk.com/ss/excel/tips/tip46.htm if not, that is a good place to start. -- Regards, Tom Ogilvy "keepITcool" wrote in message ... it's a recursive procedure. (which calls itself) NOTE the description you give of the initial arguments s/b reversed! to run it you'd call it like: Dim currentrow As Long Sub Foo() currentrow = 1 Call GetPermutation("", "ABCDEF") End Sub and it will run the 720 (=PERMUT(6,5) permutations of the letters "A thru F" -- keepITcool | www.XLsupport.com | keepITcool chello nl | amsterdam chandrans wrote in message : I have come across this permutation generator code. But doesn't understand it Can anybody explain how this works? where x will be the string input and y will be initially "" Sub GetPermutation(x As String, y As String) ' The source of this algorithm is unknown Dim i As Integer, j As Integer j = Len(y) If j < 2 Then Cells(CurrentRow, 1) = x & y CurrentRow = CurrentRow + 1 Else For i = 1 To j Call GetPermutation(x + Mid(y, i, 1), Left(y, i - 1) + Right(y, j - i)) Next End If End Sub |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
permutation | Excel Worksheet Functions | |||
Permutation Builder | Excel Discussion (Misc queries) | |||
Permutation in excel | Excel Worksheet Functions | |||
Permutation in excel | Excel Worksheet Functions | |||
Permutation in excel | Excel Worksheet Functions |