Rubyのcombinationメソッド:要素の組み合わせを生成する
Rubyにおけるcombinationメソッドは、配列の要素から特定の数の組み合わせを生成するのに使用されます。
このメソッドは、配列に対して呼び出され、引数として組み合わせのサイズを取ります。
この記事では、combinationメソッドの使い方と様々な応用例について詳しく解説します。
combinationメソッドの基本的な使用法
![](https://csharpprogram.com/wp-content/uploads/2021/04/無題825_20230315133655-300x300.png)
サルモリ
まずは、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版
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALwAAAEsAQAAAABRI+TxAAAAAnRSTlMAAHaTzTgAAAAeSURBVFjD7cExAQAAAMKg9U/tbwagAAAAAAAAAHgDHUwAAUf5Pv8AAAAASUVORK5CYII=)
KindleUnlimited会員であれば、全ての本をご覧頂けます。 配列、イテレータ、ブロックを理解すれば、Rubyプログラミングの世界が変わる 第1版
![](https://csharpprogram.com/wp-content/uploads/2023/03/Ruby1(枠あり)-188x300.jpg)
combinationメソッドを複雑なデータ構造での使用
![](https://csharpprogram.com/wp-content/uploads/2021/04/無題825_20230315133712-300x300.png)
サルモリ
次に、複雑なデータ構造で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メソッドを条件付きでの組み合わせ生成
![](https://csharpprogram.com/wp-content/uploads/2021/04/無題824_20230225215240-300x300.png)
サルモリ
条件付きソースコード例
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メソッドは、配列から特定の数の要素の組み合わせを生成するメソッドです。
基本的な使用法から応用例まで、さまざまなケースで有効活用できます。
最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!
![](https://csharpprogram.com/wp-content/uploads/2021/04/無題825_20230315133637-300x300.png)
サルモリ
最後まで読んでくれてありがとう!!