24.02.2014, 07:50
|
|
LMD-DML
|
|
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
|
|
Проверьте алгоритм, такое и в консоли должно работать
Код:
function bdr(ds: string): integer;
type tarr = array of integer;
procedure dl(var ds: tarr; ts: integer);
var i: integer;
begin
i:= High(ds);
if ts < i then Move(ds[ts + 1], ds[ts],(i - ts) * SizeOf(ds[ts]));
SetLength(ds, i);
end;
var
i, b, c, bg, cnt: integer;
arr: tarr;
begin
ds:= StringReplace(ds, ' ', '', [rfReplaceAll]);
SetLength(arr, Length(ds));
for i:= Low(arr) to High(arr) do arr[i]:= StrToInt(ds[i+1]);
Result:= 0;
bg := 0;
for b := 0 to 9 do
begin
cnt:= 0;
for i := High(arr) downto Low(arr) do
begin
if arr[i] = b then Inc(cnt);
if cnt = 1 then bg:= i;
if (arr[i] <> b) and (cnt <= 2) then cnt:= 0;
if ((arr[i] <> b) or (i = Low(arr))) and (cnt >= 3) then
begin
for c:= 0 to cnt-1 do dl(arr, bg - c);
Inc(Result, cnt);
cnt:= 0;
end;
end; {for i}
end; {for b}
end;
|