Rubyリファレンス: Home

combination (Array)

Edit   History

Ruby 1.8.7 Ruby 1.9

標準クラス・モジュール > Array > combination

array.combination(n) {|arr| block }

combinationメソッドは、配列から引数n個の要素を選んだときの組合せ(順序なし、重複を許さない組合せ)を数え上げます。組合せの数だけブロックを繰り返し実行し、ブロック引数arrに組合せを配列で入れます。戻り値はレシーバ自身です。

次の例は、4個の数から3個を選んだときの組合せです。4通りの組合せができます。

numbers = [1, 2, 3, 4]
numbers.combination(3) {|a, b, c| printf("(%d, %d, %d) ", a, b, c) }
puts ""
(1, 2, 3) (1, 2, 4) (1, 3, 4) (2, 3, 4)

ブロックを省略したときは、Enumeratorオブジェクトを返します。

flavors = ["バニラ", "イチゴ", "チョコ", "抹茶"]
double = flavors.combination(2)
puts double.collect {|arr| arr.join("+") }.join(" ")
バニラ+イチゴ バニラ+チョコ バニラ+抹茶 イチゴ+チョコ イチゴ+抹茶 チョコ+抹茶

引数nが0のときは空の組合せが1つとなります。nが要素数より大きいとき、マイナスのときは組合せは0となります。

p [1, 2, 3].combination(0).to_a
p [1, 2, 3].combination(4).to_a
[[]]
[]

関連項目