- 締切済み
パターン抽出
a = [1, 2, 3, 4, 5, 6, 7, 8, 9] b = [a, b, c, d] 上記みたいな配列があったとして1a, 1bみたいな組み合わせのすべてのパターンを取り出すアルゴリズムを考えています。 1配列内の数は不定、配列自体の数も不定という条件です。 たとえばここにc = [z, y, x]という配列が加わると 1az, 1ay, 1ax みたいな感じで抽出します。 ですが、あまりいい方法が浮かびません。再帰を使えばいいというのはわかるのですが数が不定というのが複雑でイメージがわきません。 いいパターン抽出のやりかたがあれば教えてください。 お願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- siffon9
- ベストアンサー率64% (136/211)
回答No.1
こんな感じでどうでしょうか。 def foo(array, idx = 0, pre_str = "") unless first = array[idx] puts pre_str return end first.each do |i| str = pre_str + i foo(array, idx+1, str) end end a = ["1","2","3","4"] b = ["a","b","c"] c = ["x","y","z"] ary = [] ary.push(a) ary.push(b) ary.push(c) foo(ary)