# This program rearranges an array into a zig-zag pattern, where the elements
# alternate between being smaller and larger than their neighbors
def rearrange_into_zigzag(arr)
(0...arr.length - 1).each do |i|
if i.even?
# Expect arr[i] < arr[i + 1]
if arr[i] > arr[i + 1]
arr[i], arr[i + 1] = arr[i + 1], arr[i]
end
else
# Expect arr[i] > arr[i + 1]
if arr[i] < arr[i + 1]
arr[i], arr[i + 1] = arr[i + 1], arr[i]
end
end
end
arr
end
arr = [3, 5, 1, 7, 9, 6, 4, 2]
rearrange_into_zigzag(arr)
p arr
# run:
#
# [3, 5, 1, 9, 6, 7, 2, 4]
#