是否有可能从等价值中提取该信息?
我知道等价值越高越好.也可以从等价值中提取类别和等级.但有没有办法找出你传递给它的7个最好的5张牌组合?
Twoplustwo是最快的扑克手评估员(每秒评估1400-1500手).你给它7张牌,然后吐出手等值.值越高,卡就越好.
以下是twoplustwo的一个很好的总结:http://www.codingthewheel.com/archives/poker-hand-evaluator-roundup#2p2
上面链接的缓存版本:http://web.archive.org/web/20130116102452/http: //www.codingthewheel.com/archives/poker-hand-evaluator-roundup
(免责声明:我正在研究一种扑克软件,其中包括手工评估)
你给它7张牌,然后吐出手等值.
有几个评估人员这样做,如果我没有弄错,他们中的一些人每秒计算超过一亿手(!).这些评估器基本上可以在一个巨大的数组中进行7次数组查找,只需要几个周期(尽管有缓存未命中)来评估一只手.我不认为14-15百万/秒是最接近最快的.如果我没有弄错的话,CactusKev的评估员要快10倍.
现在回答你的问题:
你如何从传递给它的7个中获得最好的5张牌组合?
好吧它没有告诉你,但一旦掌握了手的力量,它就会变得非常容易:你不需要重新发明轮子.
您可以使用强度来简化"最佳五分之五"计算.
你也可以使用其他图书馆,直接给你五张最好的牌(而不仅仅是他们的力量),或者你可以用自己的力量找到最好的五张牌.
我只举几个例子......
你知道你有一个完整的房子(又名 "船"),然后你知道你正在寻找三张具有相同等级然后最好的一对的牌(如果有两对,但你肯定会找到至少有一个,因为评估员告诉你你有一条船).
你知道你有一个直的:从最好的一个开始找到五张相互跟随的牌(小心特殊的轮箱情况).
你也可以在直道上获得更多的动力:你可以利用每一个可能的直线,并比较评估者给你的力量.如果它匹配,例如,一个十高的直线,那么只需寻找任何T,9,8,7和6卡(无论套装).
你知道你有"没有配对":只需拿你发现的五张最高牌
等等
只有几个不同的等级...他们可能是,例如:
NO_PAIR
ONE_PAIR
TWO_PAIRS
SET
STRAIGHT
FLUSH
FULL_HOUSE
FOUR_OF_A_KIND
STRAIGHT_FLUSH
Run Code Online (Sandbox Code Playgroud)
(你当然可以创建中间的"轮直"和"轮冲直"和"皇家同花"案例,如果你想,等等)
一旦你知道你的手牌是什么类型(感谢你使用的快速评估器),只需切换到一段代码,找到该特定手牌的七个中最好的一个.
我认为这是一个很好的方法,因为你利用超快的评估器,然后大大简化你的逻辑.
在启动时,您需要计算一次强度,例如通过计算:
HIGHEST_NO_PAIR_HAND = ultraFastEvaluator( "As Kd Qh Jc 9d 5s 2c" );
HIGHEST_FULL_HOUSE = ultraFastEvaluator( "As Ac Ad Kh Ks 8s 2h" );
Run Code Online (Sandbox Code Playgroud)
我当然不主张在这里使用字符串.这只是一个例子......
那么你可以为每只手找到最好的五个:
因此,在我看来,你可以重用一个直接找到七个中最好的API或完全重写自己的API,但如果你使用快速评估器的结果然后简化你的逻辑,它会更快.
编辑指出,没有一种方法可以做到"七个中最好的五个".例如,在Kc Kd Qh Qs 2c板上的As Ac,"As Ac Kc Kd Qh"和"As Ac Kc Kd Qs"都是"五个最佳"(最后一个女王的套装并不重要).