hasherfrog
Цитата hasherfrog:
Мало данных для анализа, как говоривает кое-кто из моих знакомых
|
Уж точно не я, данных вполне достаточно
Surround
Цитата Surround:
есть набор символов, скажем A и B. Нужно составить, например, все возможные 6-символьные комбинации из этих знаков, причем, чтобы ни одни подряд более 3х раз не повторялся.
|
Заметьте, что это простейшая задача по двоичной арифметике, с ней возиться как минимум не интересно. Рассмотрите такой вариант:
Код:

program Project1; {by Savant}
{$APPTYPE CONSOLE}
uses
SysUtils, Classes;
const
js = 2; { Кол-во различных символов }
jp = 3; { Максимально допустимое кол-во повторяющихся символов}
jm = 6; { Кол-во символов в строке }
a: array[1..js] of Char = ('A','B');
var
i: Integer; { ИМХО byte/shortint не рекомендую использовать, при вычислениях он приводится к Cardinal/Integer }
b: array[1..jm] of Char;
res: TStrings;
function passed: Boolean;
{ Проверяет текущее значение b на допустимость по кол-ву повторений }
var
x,y: Integer;
c: array[1..jp+1] of Char;
begin
Result:=True;
for x:=1 to js do begin
for y:=1 to jp+1 do c[y]:=a[x];
if Pos(c,b) <> 0 then Result:=False;
end;
end;
procedure moving(k,j: Integer);
var
i: Integer;
begin
for i:=j to js do begin
b[k]:=a[i];
if passed then
if res.IndexOf(b)=-1 then res.Add(b);
if k > 1 then moving(k-1,1);
end;
end;
begin
res:=TStringList.Create;
try
for i:=1 to jm do b[i]:=a[1];
for i:=1 to jm do moving(i,2);
for i:=0 to res.Count-1 do WriteLn(res.Strings[i]);
finally
res.Free;
end;
ReadLn;
end.
Как видите, он более универсальный. По умолчанию настроен на решение Вашей задачи. И вроде как даже работает

. Вот что мне программа выдала после выполнения. Если результат неверен, предупреждайте сразу, я покопаюсь в коде:
BBBAAA
BABAAA
AABAAA
ABBAAA
BBABAA
BAABAA
AAABAA
ABABAA
BABBAA
AABBAA
ABBBAA
BBBABA
BBAABA
BAAABA
ABAABA
BABABA
AABABA
ABBABA
BBABBA
BAABBA
AAABBA
ABABBA
BABBBA
AABBBA
BBBAAB
BBAAAB
ABAAAB
BABAAB
AABAAB
ABBAAB
BBABAB
BAABAB
AAABAB
ABABAB
BABBAB
AABBAB
ABBBAB
BBBABB
BBAABB
BAAABB
ABAABB
BABABB
AABABB
ABBABB
BBABBB
BAABBB
AAABBB
ABABBB
p.s.: я тут несколько по геморному скопировал код, если чо не компилится, сообщайте.