n要素の配列から取り出せる部分列全パターン(計2**nパターン)を列挙したいんですが
何かいい単純な書き方がありますでしょうか?

今のところ以下のように、
何かを出してから足し合わせたりと1段間に処理を挟むような考え方でしか出せていません

a=[1,2,3]
n=a.size

p (0..n).flat_map{|i|a.combination(i).to_a}
#=> [[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]

p (0..2**n-1).map{|i|a.select.with_index{|j,k|2**k&i>0}}
#=> [[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]