私は次のような未知の要素数を持つ複数の配列を持っています
a = []
a << [:a, :c, :e]
a << [:b, :f, :g, :h, :i, :j]
a << [:d]
結果は次のようになります〜(丸めなどによる詳細はあまり気にしません)
r = [:b, :a, :f, :g, :d, :c, :h, :i, :e, :j]
これが私ができると思う方法です
まず、各配列の要素を同じ長さに均等に拡張/分散する必要があるため、次のようになります。
a << [nil, :a, nil, :c, nil, :e]
a << [:b, :f, :g, :h, :i, :j]
a << [nil, nil, :d, nil, nil]
次に、通常どおりに インターリーブします
r = a.shift
a.each { |e| r = r.zip(e) }
r = r.flatten.compact
私の現在の問題は、これらの要素を配列全体に均等に(可能な限り)分散させる方法です。4つの要素を持つ1つの配列と、5つの要素を持つ他の配列が存在する可能性がありますが、おそらく最大のものが最初に配置されます。
もちろん、これを達成する他の方法があるかどうかを確認するといいでしょう:)