[Back to MATH SWAG index]  [Back to Main SWAG index]  [Original]

{
>it. While I'm at it, does anyone have any ideas For an algorithm to generate
>and test all possible combinations of a group of letters For Real Words.

I'm sure it wouldn't take long to modify this Program I wrote, which
produces all combinations of "n" numbers.

I got the idea from "Algorithms", by Robert Sedgewick.  Recommended.
}
Program ShowPerms;

Uses
  Crt;

Const
  digits = 4; {How many digits to permute: n digits = n! perms!}

Var
  PermArray : Array [1..digits] of Byte; {Permutation holder}
  ThisDigit : Integer;

Procedure WritePerm;
Var
  loop : Byte;
begin
  For loop := 1 to 4 do
    Write(PermArray[loop]);
  Writeln;
end;

Procedure PermuteAtLevel(Level : Integer);
Var
  loop : Integer;

begin
  inc(ThisDigit);
  PermArray[Level] := ThisDigit;
  if ThisDigit = digits then
    Writeperm; {if we've accounted For all digits}
  For loop := 1 to digits do
    if PermArray[loop] = 0 then
      PermuteAtLevel(loop);
  dec(ThisDigit);
  PermArray[Level] := 0;
end;

begin
  ClrScr;
  ThisDigit := -1; {Left of Left-hand-side}
  FillChar (PermArray, sizeof(PermArray),#0); {Make it zeroes}
  PermuteAtLevel(0); {Start at the bottom}
end.
-

[Back to MATH SWAG index]  [Back to Main SWAG index]  [Original]