这个问题乍一看听起来很简单,但是看起来比现在复杂得多。 这让我难以忍受。 有52c5 = 2,598,960种方式从52张牌组中select5张牌。 然而,由于套装在扑克中是可以互换的,其中许多是等价的 – 手牌2H 2C 3H 3S 4D相当于2D 2S 3D 3C 4H – 简单地交换套装。 根据维基百科 ,一旦你考虑可能的西装颜色,有134459个不同的5张牌。 问题是,我们如何有效地产生所有这些可能的手? 我不希望产生所有的手,然后消除重复,因为我想将问题应用到更大数量的牌上,并且手的数量要评估快速螺旋失控。 我目前的尝试主要集中在深度优先生成和跟踪当前生成的卡片上,以确定下一张卡片或宽度优先的卡片和行列是否有效,生成所有可能的下一张卡片,然后通过转换每个卡片来删除重复通过重新着色来达到“规范”版本。 以下是我在Python中的广度优先解决scheme的尝试: # A card is represented by an integer. The low 2 bits represent the suit, while # the remainder represent the rank. suits = 'CDHS' ranks = '23456789TJQKA' def make_canonical(hand): suit_map […]
有一个新的开放源码扑克机器人叫做PokerPirate 。 我感兴趣的任何创造性的方式,在networking应用程序可以检测/挫败扑克机器人。 (这是一个纯粹的学术讨论,与PokerPirate的写法一样。)