Перебор вариантов
Falk0ner, вс, 06/07/2008 - 15:35.
Перебор вариантов
{ Если Х - количество видов букв, из которых состоит генеримое слово,
а Y - максимальная длинна слова, то общее количество сгенеренных
слов равно: Z = Y^1 + Y^2 + ... + Y^X }
var
Gen_Length: Byte; { максимальная длинна слова для генерации }
Gen_CharArray: String; { массив символов, из которых будет сгенерированы слова }
InS: String; { строка, из которой будет создан массив Gen_CharArray }
I: Byte; { счётчик }
F: Text; { файл для сохранения сгенерированных слов }
{ рекурсивная процедура генерации слова }
procedure Gen(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 Gen(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 - пока строка пуста }
Gen(1, '');
Close(F);
end.
Автор: --= Eagle =--
а Y - максимальная длинна слова, то общее количество сгенеренных
слов равно: Z = Y^1 + Y^2 + ... + Y^X }
var
Gen_Length: Byte; { максимальная длинна слова для генерации }
Gen_CharArray: String; { массив символов, из которых будет сгенерированы слова }
InS: String; { строка, из которой будет создан массив Gen_CharArray }
I: Byte; { счётчик }
F: Text; { файл для сохранения сгенерированных слов }
{ рекурсивная процедура генерации слова }
procedure Gen(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 Gen(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 - пока строка пуста }
Gen(1, '');
Close(F);
end.
Отправить комментарий