Contributor: SWAG SUPPORT TEAM { > I want to create all permutations. Okay. I should have first asked if you Really mean permutaions. Permutations mean possible orders. I seem to recall your orginal message had to do With card hands. They usually involve combinations, not permutations. For example, all possible poker hands are the COMBinATIONS of 52 cards taken 5 at a time. Bridge hands are the combinations of 52 cards taken 13 at a time. if you master the following Program, you should be able to figure out how to create all combinations instead of permutations. However, if you mean permutations, here is an example Program to produce permutations. (You will have to alter it to your initial conditions.) It involves a recursive process (a process which Uses itself). Recursive processes are a little dangerous. It is easy to step on your own privates writing them. They also can use a lot of stack memory. You ought to be able to take the same general methods to produce combinations instead of permutations if need be. I suggest you Compile and run the Program and see all the permutations appear on the screen beFore reading further. (BTW, counts permutations as well as producing them and prints out the count at the end.) The Procedure Permut below rotates all possible items into the first Array position. For each rotation it matches the item With all possible permutations of the remaining positions. Permut does this by calling Permut For the Array of remaining positions, which is now one item smaller. When the remaining Array is down to one position, only one permutaion is possible, so the current Array is written out as one of the results. Once you get such a Program working, it is theoretically possible to convert any recursive Program to a non-recursive one. This often runs faster. Sometimes the conversion is not easy, however. One final caution. The following Program Writes to the screen. You will see that as the number of items increases, the amount of output increases tremendously. if you were to alter the Program to Write results to a File and to allow more than 9 items, you could easily create a File as big as your hard drive. } Program Permutes; Uses Crt; Type TArry = Array[1..9] of Byte; Var Arry : TArry; Size,X : Word; NumbofPermutaions : LongInt; Procedure Permut(Arry : TArry; Position,Size : Word); Var I,J : Word; Swap: Byte; begin if Position = Size then { begin For I := 1 to Size do Write(Arry[I]:1); } inc(NumbofPermutaions) { Writeln end } else begin For J := Position to Size do begin Swap := Arry[J]; Arry[J] := Arry[Position]; Arry[Position] := Swap; Permut(Arry,Position+1,Size) end end end; begin ClrScr; Write('How many elements (1 to 9)? '); readln(Size); ClrScr; For X := 1 to Size do Arry[X] := X; {put item values in Array} NumbofPermutaions := 0; Permut(Arry,1,Size); Writeln; Writeln('Number of permutations = ',NumbofPermutaions); Writeln('Pressto Exit.'); readln end.