Here is a simpler approach. It uses the transfer order of arrays in zip :
def interleave(a, b) if a.length >= b.length a.zip(b) else b.zip(a).map(&:reverse) end.flatten.compact end interleave([21, 22], [31, 32, 33])
Be warned: this removes all nil 's:
interleave([11], [41, 42, 43, 44, nil]) # => [11, 41, 42, 43, 44]
David J.
source share