@m_seki の

I like ruby tooから引っ越し

コードゴルフじゃないよ。

toRubyで出た直積の話。

def product(ary, result=[], &blk)
  if ary.size == result.size
    yield(result)
  else
    ary[result.size].each do |x|
      product(ary, result + [x], &blk)
    end
  end
end

product([['q1'], [1, 2], ['q2'], ['a', 'b'], ['q3'], [1, 3, 5]]) do |x|
  p x
end

短く、じゃなくてわかりやすく書き直すにはどうしたら良いんだろ。
あるいは、再帰じゃなく書くとしたらどうすんだろ。

池澤さんに伝わったから、ま、いっか。