Как чередовать массивы разной длины в Ruby

Если я хочу чередовать набор массивов в Ruby, и каждый массив имеет одинаковую длину, мы можем сделать так:

a.zip(b).zip(c).flatten

Однако, как мы решаем эту проблему, если массивы могут быть разных размеров?

Мы могли бы сделать что-то вроде:

def interleave(*args)
  raise 'No arrays to interleave' if args.empty?
  max_length = args.inject(0) { |length, elem| length = [length, elem.length].max }
  output = Array.new
  for i in 0...max_length
    args.each { |elem|
      output << elem[i] if i < elem.length
    }
  end
  return output
end

Но есть ли лучший способ Ruby, возможно, с использованием zip или транспонирования или чего-то подобного?

Ответы на вопрос(3)

Ваш ответ на вопрос