環境
Ruby 3.0.1
combinationメソッドとは?
配列の要素に対して使用するメソッドです。
指定した要素数で作成可能な組み合わせを全て生成します。
使い方
基本的には、下記の形式で使用します。
Ruby
配列.combination(n).to_a
nには、組み合わせたい要素の数を指定します。
またto_aを入れないと、オブジェクト形式で返ってくるので注意です。
具体的な使用例は以下の通りです。
Ruby
array = [1, 2, 3]
p array.combination(2).to_a # => [[1, 2], [1, 3], [2, 3]]
応用:要素数を含めて、全組み合わせを生成するには?
全組み合わせと言っても、単体要素や3つ以上の組み合わせを含めたい場合があります。
その時はループ処理と組み合わせることで、パターンを網羅できました。
Ruby
array = [1, 2, 3]
size = 3 # 配列の要素数
combinations = []
size.times do |i|
array.combination(i+1) { |n| combinations << n }
end
p combinations
# => [[1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]
(もうちょっと良い書き方もありそうですが)
経緯
複合条件網羅のアルゴリズムがどうしても組めなかった時に見つけました。
paizaでお世話になりそうです。
参考