Rubyリファレンス: Home

repeated_permutation (Array)

Edit   History

Ruby 1.9.2

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

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

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

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

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

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

letters = ["C", "A", "T"]
puts letters.repeated_permutation(3).collect {|a| a.join }.join(" ")
CCC CCA CCT CAC CAA CAT CTC CTA CTT ACC ACA ACT AAC AAA AAT ATC ATA ATT TCC TCA
TCT TAC TAA TAT TTC TTA TTT

引数nが0のときは空の組合せが1つとなります。

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

関連項目