ruby - 打印出从列表的 Y 元素中选择的 X 个不同对象的所有组合

标签 ruby combinations poker

例如,52 张扑克牌中的 5 张牌 = 2598960 种组合。
但是,我实际上如何显示所有这些组合?

查找号码的代码很简单:

def binomial_coef(total,subset)
  factorial(total) / (factorial(subset) * factorial(total - subset))
end

def factorial(n)
  n.downto(1).inject(:*)
end

# different 5 card poker hand combinations
cards = 52
hand_number = 5

puts binomial_coef(cards, hand_number)

关于打印出所有实际组合的解决方案有什么想法吗?
例如:

1,2,3,4,5
1,2,3,4,6
etc.

甚至帮助入门。 谢谢!

最佳答案

你需要Array#combination

cards = (1..52).to_a
hand_number = 5
cards.combination(hand_number).to_a

=> [[1,2,3,4,5],[1,2,3,4,6],...]

关于ruby - 打印出从列表的 Y 元素中选择的 X 个不同对象的所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4121057/

相关文章:

r - 循环多个表并仅在满足条件时才保留的方法?

algorithm - 扑克游戏的商业级随机化

ruby - CSV header_converters : :symbol giving inconsistent results

ruby - 如何制作字符串第一个字母大写,第二个字母非大写,第三个字母大写,第四个字母非大写...?

ruby - Ruby 中的消息是实现细节还是基础

c# - 填充扑克 jar

c - 扑克程序中的多维数组

ruby - 如何在不使用太多内存的情况下在 Ruby 中查找字符串数组的所有排列?

r - 如何在 R 中获得组合向量?

list - 对于列表的列表,将每个列表的每个元素与每个其他列表的每个其他元素组合