How to traverse an array from both sides at the same time in Pascal

1 Answer

0 votes
program TraverseBothSides;

{
    Demonstration of traversing an array from both sides at the same time
    in idiomatic Free Pascal.

    We use the classic "two-index" technique:
        - left  starts at the first element (low index)
        - right starts at the last element (high index)
    Both move toward the center.

    This approach is efficient (O(n)), simple, and widely used in
    algorithms such as palindrome checks, partitioning, and pair searching.
}

type
    TIntArray = array of Integer;

{---------------------------------------------------------------
  Procedure: TraverseFromBothSides
  Purpose:   Traverse an array from both ends simultaneously.
---------------------------------------------------------------}
procedure TraverseFromBothSides(const arr: TIntArray);
var
    left, right: Integer;
begin
    left  := Low(arr);   { built‑in function: first index }
    right := High(arr);  { built‑in function: last index }

    { Move inward until the indices cross }
    while left <= right do
    begin
        WriteLn('Left: ', arr[left], ', Right: ', arr[right]);
        Inc(left);   { move left pointer forward }
        Dec(right);  { move right pointer backward }
    end;
end;

{---------------------------------------------------------------
  Main program
---------------------------------------------------------------}
var
    data: TIntArray;
begin
    data := TIntArray.Create(10, 20, 30, 40, 50, 60, 70, 80, 90);

    WriteLn('Traversing from both sides:');
    TraverseFromBothSides(data);
end.


{
run:

Traversing from both sides:
Left: 10, Right: 90
Left: 20, Right: 80
Left: 30, Right: 70
Left: 40, Right: 60
Left: 50, Right: 50

}

 



answered Jul 30 by avibootz
...