PHP使用算法求出最大同花顺
<?php
$poker = array (
0 =>
array (
0 => 1,
1 => 2,
2 => 1,
3 => 4,
4 => 1,
5 => 3,
6 => 2
),
1 =>
array (
0 => 1,
1 => 6,
2 => 9,
3 => 10,
4 => 11,
5 => 12,
6 => 13
)
);
$max_flush_count = 7;
$poker = [[1,1,1,1,1,1,1],[5,6,7,8,9,10,11]];
var_dump(get_straight_flush($poker,$max_flush_count));
$poker = [[1,1,1,1,1,1,1],[5,6,7,8,9,10,12]];
var_dump(get_straight_flush($poker,$max_flush_count));
$poker = [[1,1,1,1,1,1,1],[3,4,7,8,9,10,11]];
var_dump(get_straight_flush($poker,$max_flush_count));
$poker = [[1,1,1,1,1,1,1],[2,4,5,6,7,8,10]];
var_dump(get_straight_flush($poker,$max_flush_count));
$poker = [[1,1,1,1,1,1,1],[2,4,5,6,7,8,11]];
var_dump(get_straight_flush($poker,$max_flush_count));
$max_flush_count = 6;
$poker = [[1,1,1,1,1,1],[6,7,8,9,10,11]];
var_dump(get_straight_flush($poker,$max_flush_count));
$poker = [[1,1,1,1,1,1],[6,7,8,9,10,12]];
var_dump(get_straight_flush($poker,$max_flush_count));
$poker = [[1,1,1,1,1,1],[5,7,8,9,10,11]];
var_dump(get_straight_flush($poker,$max_flush_count));
function get_straight_flush($result_poker,$max_flush_count)
{
$king = [10,11,12,13,1];
$res = array_intersect($king,$result_poker[1]);
if(count($res) == 5){
$poker_level = 10;
$result_poker[1] = $king;
$result_poker[0][] = $result_poker[0][0];
unset($result_poker[0][0]);
unset($result_poker[0][1]);
unset($result_poker[0][2]);
}else{
$sign = 0;
foreach ($result_poker[1] as $k => $v) {
if($k+1 < $max_flush_count){
if($v+1 == $result_poker[1][$k+1]){
$sign++;
if($sign == 4){
if($max_flush_count == 5){
$poker_level = 9;
if($result_poker[1][0] == 1){
$poker_level = 10;
}
}else if($max_flush_count == 6){
if($result_poker[1][$k-3] == 1){
$poker_level = 10;
break;
}
if($sign == 4){
if($k == 4){
unset($result_poker[0][0]);
unset($result_poker[1][0]);
}else{
unset($result_poker[0][$max_flush_count-1]);
unset($result_poker[1][$max_flush_count-1]);
}
$poker_level = 9;
break;
}
}else{
if($result_poker[1][0] == 1){
$poker_level = 10;
break;
}
if($sign == 4){
if($k+2 == $max_flush_count){
unset($result_poker[0][0]);
unset($result_poker[1][0]);
unset($result_poker[0][1]);
unset($result_poker[1][1]);
}else if($k+3 == $max_flush_count){
if(!empty($result_poker[1][$k+3]) && $v+3 == $result_poker[1][$k+3]){
unset($result_poker[0][0]);
unset($result_poker[1][0]);
unset($result_poker[0][1]);
unset($result_poker[1][1]);
}else{
unset($result_poker[0][0]);
unset($result_poker[1][0]);
unset($result_poker[0][$max_flush_count-1]);
unset($result_poker[1][$max_flush_count-1]);
}
}else{
if($k == 5){
unset($result_poker[0][0]);
unset($result_poker[1][0]);
unset($result_poker[0][1]);
unset($result_poker[1][1]);
}else if($k == 4){
if($v+1 == $result_poker[1][$k+1]){
if($v+2 == $result_poker[1][$k+2]){
unset($result_poker[0][0]);
unset($result_poker[1][0]);
unset($result_poker[0][1]);
unset($result_poker[1][1]);
}else{
unset($result_poker[0][0]);
unset($result_poker[1][0]);
unset($result_poker[0][$max_flush_count-1]);
unset($result_poker[1][$max_flush_count-1]);
}
}else{
unset($result_poker[0][$max_flush_count-1]);
unset($result_poker[1][$max_flush_count-1]);
unset($result_poker[0][$max_flush_count-2]);
unset($result_poker[1][$max_flush_count-2]);
}
}else{
var_dump($k);
var_dump($v);
if($v+3 == $result_poker[1][$k+3]){
var_dump(44);
unset($result_poker[0][0]);
unset($result_poker[1][0]);
unset($result_poker[0][1]);
unset($result_poker[1][1]);
}else if($v+2 == $result_poker[1][$k+2]){
unset($result_poker[0][0]);
unset($result_poker[1][0]);
unset($result_poker[0][$max_flush_count-1]);
unset($result_poker[1][$max_flush_count-1]);
}else{
unset($result_poker[0][$max_flush_count-1]);
unset($result_poker[1][$max_flush_count-1]);
unset($result_poker[0][$max_flush_count-2]);
unset($result_poker[1][$max_flush_count-2]);
}
}
}
$poker_level = 9;
break;
}
}
}
}else{
if($sign < 4){
$sign = 0;
$poker_level = 6;
}
}
}
}
}
if($sign < 4){
if($result_poker[1][0] == 1){
unset($result_poker[0][1]);
unset($result_poker[1][1]);
unset($result_poker[0][2]);
unset($result_poker[1][2]);
}else{
unset($result_poker[0][0]);
unset($result_poker[1][0]);
unset($result_poker[0][1]);
unset($result_poker[1][1]);
}
}
return array(
'poker_level' => $poker_level,
'result_poker' => $result_poker
);
}