Rubyのcombinationメソッド:要素の組み合わせを生成する
Rubyにおけるcombinationメソッドは、配列の要素から特定の数の組み合わせを生成するのに使用されます。
このメソッドは、配列に対して呼び出され、引数として組み合わせのサイズを取ります。
この記事では、combinationメソッドの使い方と様々な応用例について詳しく解説します。
combinationメソッドの基本的な使用法

サルモリ
まずは、combinationメソッドの基本的な使用法を見てみましょう。
基本的なソースコード例
1 2 3 |
array = [1, 2, 3, 4] combinations = array.combination(2).to_a puts combinations.inspect |
出力結果
[[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]
このコードでは、配列[1, 2, 3, 4]
からすべての2要素の組み合わせを生成しています。
応用例
Ruby言語のブロック、イテレータを徹底的に学びたい方は画像をクリックしてご覧ください!
KindleUnlimited会員であれば、全ての本をご覧頂けます。 配列、イテレータ、ブロックを理解すれば、Rubyプログラミングの世界が変わる 第1版

KindleUnlimited会員であれば、全ての本をご覧頂けます。 配列、イテレータ、ブロックを理解すれば、Rubyプログラミングの世界が変わる 第1版
-188x300.jpg)
combinationメソッドを複雑なデータ構造での使用

サルモリ
次に、複雑なデータ構造でcombinationを使用する例を見てみましょう。
複雑なデータ構造でのソースコード例
1 2 3 |
students = ["Alice", "Bob", "Charlie", "David"] project_teams = students.combination(2).to_a puts project_teams.inspect |
出力結果
[["Alice", "Bob"], ["Alice", "Charlie"], ["Alice", "David"], ["Bob", "Charlie"], ["Bob", "David"], ["Charlie", "David"]]
この例では、学生のリストから可能な全ての2人チームを生成しています。
combinationメソッドを条件付きでの組み合わせ生成

サルモリ
条件付きソースコード例
1 2 3 |
numbers = [1, 2, 3, 4, 5] even_combinations = numbers.combination(3).select { |combo| combo.sum.even? } puts even_combinations.inspect |
出力結果
[[1, 2, 5], [1, 3, 4], [2, 3, 5], [2, 4, 5]]
このコードでは、3つの数の和が偶数になる全ての組み合わせを選んでいます。
まとめ
Rubyのcombinationメソッドは、配列から特定の数の要素の組み合わせを生成するメソッドです。
基本的な使用法から応用例まで、さまざまなケースで有効活用できます。
最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!

サルモリ
最後まで読んでくれてありがとう!!