2024-10-19 Ruby combination
Rubyでcombination
を使えば、組み合わせが生成される。
see. Array#combination (Ruby 3.3 リファレンスマニュアル)
使用例
numbers = [1, 2, 3, 4, 5]
numbers.combination(2).to_a
#=> [[1, 2], [1, 3], [1, 4], [1, 5], [2, 3], [2, 4], [2, 5], [3, 4], [3, 5], [4, 5]]
独自実装パターン
combination
メソッドを使わない実装もしてみた。
numbers = [1, 2, 3, 4, 5]
combinations = []
numbers.each_with_index do |num1, index1|
numbers.each_with_index do |num2, index2|
if index2 > index1
combinations << [num1, num2]
end
end
end
p combinations
#=> [[1, 2], [1, 3], [1, 4], [1, 5], [2, 3], [2, 4], [2, 5], [3, 4], [3, 5], [4, 5]]
もっと賢く実装するなら下記。
numbers = [1, 2, 3, 4, 5]
combinations = []
numbers.each_with_index do |num1, index1|
numbers[index1+1..].each do |num2|
combinations << [num1, num2]
end
end
p combinations
#=> [[1, 2], [1, 3], [1, 4], [1, 5], [2, 3], [2, 4], [2, 5], [3, 4], [3, 5], [4, 5]]