Rubyリファレンス: Home

permutation (Array)

Edit   History

Ruby 1.8.7 Ruby 1.9

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

array.permutation([n]) {|arr| block }

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

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

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

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

letters = ["C", "A", "T"]
puts letters.permutation.collect {|a| a.join }.join(" ")
CAT CTA ACT ATC TCA TAC

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

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

関連項目