我有多个元素计数未知的数组,例如
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 个元素的数组,另一个包含 5 个元素,但可能最大的应该排在第一位。
当然很高兴看看是否有其他方法可以实现这一点:)