[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]