重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

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 みたいな感じで抽出します。

ですが、あまりいい方法が浮かびません。再帰を使えばいいというのはわかるのですが数が不定というのが複雑でイメージがわきません。
いいパターン抽出のやりかたがあれば教えてください。
お願いします。

A 回答 (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)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!