从一副扑克中随机抽5张,并输出结果是不是顺子?(时间60分钟)


    刚看到这题目时我心理活动是,这太特么简单了好吗 这题拿来考人?
    结果后面做的乱七八糟的,有些问题也没考虑到。回家之后重新想了下,总算输出正常了。
    用最土的办法,过程如下: 先把牌拼出来,随机生成5张,再让正序排列,
    使用字符串函数检查是否存在于2345678910JQKA,然后输出。

<?php


/*拼出52张牌*/
$pk = [
"红"=>[2,3,4,5,6,7,8,9,10,'J','Q','K','A'],
"黑"=>[2,3,4,5,6,7,8,9,10,'J','Q','K','A'],
"方"=>[2,3,4,5,6,7,8,9,10,'J','Q','K','A'],
"梅"=>[2,3,4,5,6,7,8,9,10,'J','Q','K','A'],
];

foreach ($pk as $key => $value) {
	foreach ($value as $k => $v) {
		$array[]= $key.'-'.$v;
	}
}

/*抽出五张*/
for($i=0;$i<5;$i++){
	$rand_number2[] = $array[array_rand($array)];
}

// $rand_number2=["黑-K","红-J","梅-9","红-10","方-Q"]; //顺子测试案例
foreach ($rand_number2 as $key => $value) {
	$string = explode('-', $value);
	$str_color[] =$string[0];
	$str_num[] = $string[1];
	$color_num .= $string[0].' '.$string[1].'  ,   '; 
}

/*判断扑克数量*/
if(count($str_num)!=5){
	echo '发牌数量错误';
	die;
}

/*检查是否顺子*/
sort($str_num);
$arr_to_str2 = intval(implode('', $str_num));
$sort_pk = ["J"=>"","Q"=>"","K"=>"","A"=>""];

foreach ($str_num as $value) {
	if($value=='J' || $value=='Q' || $value=='K' || $value=='A' ){
		$sort_pk[$value]=$value;
	}
}
foreach ($sort_pk as $value) {
	$arr_to_str2 .= $value;
}
print_r($arr_to_str2);

$pk = '2345678910JQKA';
$pos = strpos($pk,$arr_to_str2);

print_r($color_num);
echo "<br>";
if($pos===false && $arr_to_str2!='2345A'){
	echo "不是顺子";
}else{
	echo '是顺子';
}

输出结果:

红 6 , 红 Q , 梅 1 , 梅 J , 黑 5 ,

不是顺子

猜你喜欢

转载自blog.csdn.net/sphinx1122/article/details/83589727