-1

2 つの配列を正確に入れ替えずにインターリーブしたいと思います。たとえば、次のようになります。

a = [1,2,3,4,5,6,7,8,9]
b = ['a','b','c']

f = [1,2,'a',3,4,'b',5,6,'c',7,8,9]出力として受け取りたいです。bの 2 つの要素ごとに 1 つの要素が必要aです。

解決策は次のようになります。

a = [1,2,3,4,5,6,7,8,9]
b = ['a','b','c']

even, odd = a.partition.each_with_index{ |_, i| i.even? }
res = even.zip(odd,b)
res = res.flatten.reject(&:blank?)
#=> [1, 2, "a", 3, 4, "b", 5, 6, "c", 7, 8, 9]

しかし、私はこのソリューションに興奮していません。何か案は?

4

3 に答える 3

4
a.each_slice(2).zip(b).flatten
#=> [1, 2, "a", 3, 4, "b", 5, 6, "c"] 
于 2016-07-08T14:51:06.130 に答える
0

次のことを試すことができます(提供した両方の例について):

b.zip(a.each_slice(2)).map(&:reverse).flatten
# => [1, 2, "a", 3, 4, "b", 5, 6, "c"]

デモンストレーション

于 2016-07-08T14:50:58.287 に答える