首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找出最好的牌来完成部分扑克牌

找出最好的牌来完成部分扑克牌
EN

Stack Overflow用户
提问于 2020-03-26 02:14:55
回答 1查看 57关注 0票数 0

我正在尝试为以下问题找到一个有效的解决方案:

术语:

排名: 1-13,其中11=Jack,12=Queen,13=King

套装: H=Hearts、C=Clubs、D=Diamonds、S=Spades

"WishCard":一张可以根据玩家的意愿佩戴任何等级/花色的牌,而不需要重复的牌。

给出2到7张牌,其中至少0到7张被定义为"WishCard",那么在特定的给定时间,玩家可能拥有的最佳牌组合是什么?

代码语言:javascript
复制
Examples:
Stage: Pre-Flop
Hand[4C,*] -> Hand[4C,4H] | Pair

Stage: Flop
Hand[4C,*], Shared[*,10H,5C] -> Hand[4C,10C], Shared[10D,10H,5C] | 10 Three of a kind

Stage: Turn
Hand[4C,*], Shared[*,10H,5C,1S] -> Hand[4C,1C], Shared[1D,10H,5C,1S] | Ace Three of a kind

Stage: River
Hand[4C,*], Shared[*,10H,5C,1S,6C] -> Hand[4C,8C], Shared[7C,10H,5C,1S,6C] | 4C-8C Straight Flush

我感觉像是在用蛮力逼迫它,这将永远持续下去。有没有更快的计算方法?

EN

回答 1

Stack Overflow用户

发布于 2020-03-26 03:58:06

这取决于你所说的“蛮力强迫”是什么意思。但它是混乱的,因为有很多可能性和很多逻辑。

我会将其预处理成数据结构,然后编写函数来测试特定类型的手。然后,使用脑海中浮现的任何技巧,从最好到最差寻找每一种。

预处理的一个示例是构建卡类型/计数的散列。举个例子,在转弯的时候:

代码语言:javascript
复制
{4: 1, 10: 1, 4: 1, 5: 1, 1: 1, 14: 1, "*": 2}

现在"*"出现2x的事实意味着我们需要另外2来得到4,或者1来得到3,或者没有来得到2。而不必分析这些"*"变成了哪张卡。您现在可以为4种类型、满屋、3种类型、2对和1对构建测试。

对于直道,您可以运行序列,跟踪您看到的最后几张5牌的数量。如果你在*的数量上有不足,那么你就是一个直线生。

对于刷新,您将在每次刷新时返回指针。

对于笔直的同花顺,你可以分析笔直的平手。

然后你只需要选择高的牌。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60854919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档