配列内で特定の値が続いている区間を調べたい


`[0,0,1,1,1,1,0,0,0,1,1,1,1,1,0,0]`

とあった時、1の続いている区間を調べたいです。

たとえばこの時、  
`2..5, 9..13` ということが知りたいです。

`each_with_index`でflag立ててやる方法は思いつきましたが、何かスマートな方法はありますか？




フラグを立てないというと、こんな感じでしょうか。

[code]

    [0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0].
      each_with_index.chunk {|x, i| x == 1 }.select {|b, a| b}.
      map {|b, a| [a.first[1], a.last[1]] }
    #=> [[2, 5], [9, 13]]
    
[/code]




フラグを立てないというと、こんな感じでしょうか。

[code]

    [0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0].
      each_with_index.chunk {|x, i| x == 1 }.select {|b, a| b}.
      map {|b, a| [a.first[1], a.last[1]] }
    #=> [[2, 5], [9, 13]]
    
[/code]

