根据德扑的规则,有四条、葫芦、三条、两对等牌型,暂时放下同花和顺子的情况,先研究一下这些牌型的算法该怎么写。
对于每个玩家来说,他面对的选择是从7张牌中选出5张牌组合成最大的牌型,所以输入参数是一个有7个元素组成的一维数组,如下面这种形式:
$cards=array("H7", "C7", "S7", "CJ", "CA", "HJ", "DK");
可以一眼看出这可以组成一副葫芦的牌型:三个7带两个J。因为与花色无关,所以只关心点数。取出点数:
foreach($cards as $c){
$point.=$c[1];
}
$po=str_split($point);//字符串转换为数组
$po_count=array_count_values($po);//统计各点数的个数
经过如上处理,最后形成的数组就是如下的形式:
$po_count=array("7"=>3,"J"=>2,"K"=>1,"A"=>1);
而点数中还还包含有T、J、Q、K、A等字母,不便于排序,所以必须进行一次转换
foreach(array_keys($arr) as $v) {
switch ($v) {
case "A":
$poi[] = 14;
break;
case "K":
$poi[] = 13;
break;
case "Q":
$poi[] = 12;
break;
case "J":
$poi[