[1, 3, 5]から[[1], [1, 3], [3, 5], [1, 3, 5]]を作るには？


[1, 3, 5]から[[1], [1, 3], [3, 5], [1, 3, 5]]を作るスマートな書き方はありませんか？

上記間違えてました。  
[1, 3, 5]から[[1], [3], [5], [1, 3], [3, 5], [1, 3, 5]]です。  
[1, 2, 3,
4]だと、[[1],[2],[3],[4],[1,2],[2,3],[3,4],[1,2,3],[2,3,4],[1,2,3,4]]です。




こんな感じでできました。

[code]

    a = [1, 3, 5]
    a.each_cons(1).to_a  + a.each_cons(2).to_a + a.each_cons(3).to_a
    
[/code]

配列のサイズによらないやり方はこんな感じでしょうか。

[code]

    a = [1, 3, 5]
    a.size.times.map{|i| a.each_cons(i+1).to_a}.flatten(1)
    
[/code]




こんな感じでできました。

[code]

    a = [1, 3, 5]
    a.each_cons(1).to_a  + a.each_cons(2).to_a + a.each_cons(3).to_a
    
[/code]

配列のサイズによらないやり方はこんな感じでしょうか。

[code]

    a = [1, 3, 5]
    a.size.times.map{|i| a.each_cons(i+1).to_a}.flatten(1)
    
[/code]

