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
短く、じゃなくてわかりやすく書き直すにはどうしたら良いんだろ。
あるいは、再帰じゃなく書くとしたらどうすんだろ。
池澤さんに伝わったから、ま、いっか。