#
# Demonstration of traversing an array from both ends
# at the same time in idiomatic Ruby.
#
# We use the classic "two‑index" technique:
# - left starts at index 0
# - right starts at index arr.length - 1
# 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.
#
# ------------------------------------------------------------
# Function: traverse_from_both_sides
# Purpose: Traverse an array from both ends simultaneously.
# ------------------------------------------------------------
def traverse_from_both_sides(arr)
left = 0 # left index
right = arr.length - 1 # right index
# Move inward until the indices cross
while left <= right
puts "Left: #{arr[left]}, Right: #{arr[right]}"
left += 1
right -= 1
end
end
# ------------------------------------------------------------
# Main program
# ------------------------------------------------------------
array = [10, 20, 30, 40, 50, 60, 70, 80, 90]
puts "Traversing from both sides:"
traverse_from_both_sides(array)
#
# 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
#