2010-12-21 15 views
0

Rubyで配列の要素の固定数を設定する方法。Rubyで配列の要素の固定数を設定する方法

例えば、 a=["a","b","c","d"] が出力

a=["a","b","cd"] 
+1

質問を明確にすることはできますか?あなたの例では、3番目と4番目の要素が連結されていると言っていますか? – Dogweather

+0

はい、配列の要素数を減らしているので、それらは連結されています。 – Dejan

答えて

3
class Array 
    def squeeze(n, &p) 
    p = Proc.new {|xs| xs.join} unless p 
    arr = self[0..n-2] 
    arr << p.call(self[n-1..-1]) 
    end 
end 

a = ['a', 'b', 'c', 'd', 'e'] 
a.squeeze(3) # => ["a", "b", "cde"] 

それは、境界チェックが必要であるが、あなたのアイデアを得る3に配列サイズを設定でしょう。それ以外の場合は

a.join.split '', 3 

:あなたのような何かを行うことができ、あなたは要素がちょうど1文字の文字列を知っていた場合は

[1, 2, 3, 4].squeeze(3) {|xs| xs.inject {|acc,x| acc+x}} # => [1, 2, 7] 
+0

これは非常に良いですが、これを行うRuby Arrayクラス内にネイティブ実装はありません。これは以前と同じように見えましたが、それ以上見つけることはできません。 #1の場合は – Dejan

6

:「組み合わせ」機能がブロック引数として指定できることに注意してください

a[0..1] + [a[2..-1].join] 

それとも:

a[0..1] << a[2..-1].join 
+0

+1。ニースと簡潔な視覚的なノイズなし。 –

関連する問題