program MiddleOutIteration;
{$mode objfpc}
var
arr: array[0..7] of Integer = (0,1,2,3,4,5,6,7);
n, mid: Integer;
left, right: Integer;
begin
n := Length(arr);
mid := n div 2; // middle index for even-sized array
left := mid - 1; // start expanding left
right := mid; // start expanding right
// Iterate outward from the middle
while (left >= 0) or (right < n) do
begin
if right < n then
begin
Write(arr[right], ' ');
Inc(right);
end;
if left >= 0 then
begin
Write(arr[left], ' ');
Dec(left);
end;
end;
end.
{
run:
4 3 5 2 6 1 7 0
}