erschachteln von Arrays unterschiedlicher Länge in Ru

Wenn ich eine Reihe von Arrays in Ruby verschachteln möchte und jedes Array dieselbe Länge hat, können wir dies folgendermaßen tun:

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

Wie können wir dieses Problem jedoch lösen, wenn die Arrays unterschiedliche Größen haben können?

Wir könnten so etwas machen wie:

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

Aber gibt es einen besseren 'Ruby'-Weg, vielleicht mit zip oder transponieren oder so?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage