Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Перебор вариантов

01.01.2007
{ Если Х - количество видов букв, из которых состоит генеримое слово,
  а Y - максимальная длинна слова, то общее количество сгенеренных
  слов равно: Z = Y^1 + Y^2 + ... + Y^X }
 
var
  Gen_Length: Byte;      { максимальная длинна слова для генерации }
  Gen_CharArray: String; { массив символов, из которых будет сгенерированы слова }
  InS: String;           { строка, из которой будет создан массив Gen_CharArray }
  I: Byte;               { счётчик }
  F: Text;               { файл для сохранения сгенерированных слов }
 
{ рекурсивная процедура генерации слова }
procedure GenNext(Gen_LastCharNo: Byte; Gen_Str: String);
var
  I: Byte;               { счётчик }
begin
  { генерируем до тех пор, пока не достигнем последнего символа в массиве генерации }
  for I := 1 to Byte(Gen_CharArray[0]) do
    begin
      { устанавливаем длинну строки слова, которое сейчас сгенерируем }
      Byte(Gen_Str[0]) := Gen_LastCharNo;
 
      { изменяем последний символ генерируемого слова, которое нам передано 
        в заголовке процедуры }
      Gen_Str[Gen_LastCharNo] := Gen_CharArray[I];
 
      { слово сгенерировано, записываем в файл }
      WriteLn(F, Gen_Str);
 
      { если мы не достигли максимальной длинны слова, вызываем себя рекурсивно,
        указав, что уже следующи символ будет последним и передавая уже 
        сгенерированный кусок строки }
      if Gen_Length > Gen_LastCharNo then GenNext(Gen_LastCharNo+1, Gen_Str);
    end;
end;
 
begin
  Gen_CharArray := 'DELPHI';
 
  { в примере максимальная длинна слова для генерации равна длинне массива символов }
  Gen_Length := Byte(Gen_CharArray[0]);
 
  Assign(F, 'OUTPUT.TXT');
  ReWrite(F);
 
  { запускаем генерацию
    Gen_LastCharNo - последний символ будет иметь номер 1
    Gen_Str - пока строка пуста }
  GenNext(1, '');
 
  Close(F);
end.

 

Автор: --= Eagle =--