Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
36
Task/Equilibrium-index/Pascal/equilibrium-index-1.pas
Normal file
36
Task/Equilibrium-index/Pascal/equilibrium-index-1.pas
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
Program EquilibriumIndexDemo(output);
|
||||
|
||||
{$IFDEF FPC}{$Mode delphi}{$ENDIF}
|
||||
|
||||
function ArraySum(list: array of integer; first, last: integer): integer;
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
Result := 0;
|
||||
for i := first to last do // not taken if first > last
|
||||
Result := Result + list[i];
|
||||
end;
|
||||
|
||||
procedure EquilibriumIndex(list: array of integer; offset: integer);
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
for i := low(list) to high(list) do
|
||||
if ArraySum(list, low(list), i-1) = ArraySum(list, i+1, high(list)) then
|
||||
write(offset + i:3);
|
||||
end;
|
||||
|
||||
var
|
||||
{** The base index of the array is fully taken care off and can be any number. **}
|
||||
numbers: array [1..7] of integer = (-7, 1, 5, 2, -4, 3, 0);
|
||||
i: integer;
|
||||
|
||||
begin
|
||||
write('List of numbers: ');
|
||||
for i := low(numbers) to high(numbers) do
|
||||
write(numbers[i]:3);
|
||||
writeln;
|
||||
write('Equilibirum indices: ');
|
||||
EquilibriumIndex(numbers, low(numbers));
|
||||
writeln;
|
||||
end.
|
||||
86
Task/Equilibrium-index/Pascal/equilibrium-index-2.pas
Normal file
86
Task/Equilibrium-index/Pascal/equilibrium-index-2.pas
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
Program EquilibriumIndexDemo(output);
|
||||
{$IFDEF FPC}{$Mode delphi}{$ENDIF}
|
||||
type
|
||||
tEquiData = shortInt;//Int64;extended ,double
|
||||
tnumList = array of tEquiData;
|
||||
tresList = array of LongInt;
|
||||
const
|
||||
cNumbers: array [11..17] of tEquiData = (-7, 1, 5, 2, -4, 3, 0);
|
||||
|
||||
function ArraySum(const list: tnumList):tEquiData;
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
result := 0;
|
||||
for i := Low(list) to High(list) do
|
||||
result := result+list[i];
|
||||
end;
|
||||
|
||||
procedure EquilibriumIndex(const list:tnumList;
|
||||
var indices:tresList);
|
||||
var
|
||||
pC : ^tEquiData;
|
||||
LeftSum,
|
||||
RightSum : tEquiData;
|
||||
i,idx,HiList: integer;
|
||||
|
||||
begin
|
||||
HiList := High(List);
|
||||
RightSum :=ArraySum(list);
|
||||
setlength(indices,10);
|
||||
idx := 0;
|
||||
|
||||
i := -Hilist;
|
||||
pC := @List[0];
|
||||
LeftSum:= 0;
|
||||
repeat
|
||||
Rightsum:= RightSum-pC^;
|
||||
IF LeftSum = RightSum then
|
||||
Begin
|
||||
indices[idx] := Hilist+i;
|
||||
inc(idx);
|
||||
IF idx > high(indices) then
|
||||
setlength(indices, idx+10);
|
||||
end;
|
||||
inc(i);
|
||||
leftSum := leftsum+pC^;
|
||||
inc(pC);
|
||||
until i>=0;
|
||||
leftSum := leftsum+pC^;
|
||||
IF LeftSum = RightSum then
|
||||
Begin
|
||||
indices[idx] := Hilist+i;
|
||||
inc(idx);
|
||||
end;
|
||||
setlength(indices,idx);
|
||||
end;
|
||||
|
||||
procedure TestRun(const numbers:tnumList);
|
||||
var
|
||||
indices : tresList;
|
||||
i: integer;
|
||||
Begin
|
||||
write('List of numbers: ');
|
||||
for i := low(numbers) to high(numbers) do
|
||||
write(numbers[i]:3);
|
||||
writeln;
|
||||
EquilibriumIndex(numbers,indices);
|
||||
write('Equilibirum indices: ');
|
||||
EquilibriumIndex(numbers,indices);
|
||||
for i := low(indices) to high(indices) do
|
||||
write(indices[i]:3);
|
||||
writeln;
|
||||
writeln;
|
||||
end;
|
||||
|
||||
var
|
||||
numbers: tnumList;
|
||||
I: integer;
|
||||
begin
|
||||
setlength(numbers,High(cNumbers)-Low(cNumbers)+1);
|
||||
move(cNumbers[Low(cNumbers)],numbers[0],sizeof(cnumbers));
|
||||
TestRun(numbers);
|
||||
for i := low(numbers) to high(numbers) do
|
||||
numbers[i]:= 0;
|
||||
TestRun(numbers);
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue