本文主要是介绍【PHP】从一副扑克中随机抽5张,并输出结果是不是顺子?(时间60分钟),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
从一副扑克中随机抽5张,并输出结果是不是顺子?
写这个小功能,是去年年底面试遇到的题,花了一个多小时才做完但结果并不让人满意,回家后反思好长一段时间。今天又看到这个让我心情咯噔一下的题,决定再做一遍
主体函数
//输出
function ouput($data)
{$string = '';$arr = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"];$colorBlock = [0 => '黑桃', 1 => '红桃', 2 => '梅花', 3 => '方块'];foreach ($data as $row) {$string .= sprintf("%s%s ", $colorBlock[$row['color']], $arr[$row['number']]);}$straight = isStraight(array_column($data, "number"));return ["msg" => $string, "straight" => $straight];
}// 获取颜色和数字
function getPoker()
{for ($i = 0; $i < 5; $i++) {$list[] = ['color' => rand(0, 3), 'number' => rand(0, 12)];}return $list;
}//是否顺子
function isStraight($list)
{if (count($list) != 5) {return '发牌数量错误';}//升序sort($list);//提前设定可能出现的情况$string = '0,1,2,3,4,5,6,7,8,9,10,11,12;0,9,10,11,12;0,1,10,11,12;0,1,2,11,12;0,1,2,3,12;';if(strpos($string , join(',', $list))){return "是顺子";}return "不是顺子";
}
调用并输出
// 输出颜色和数字
$data = getPoker();
$res = ouput($data);
echo $res["msg"] . "<br>" . $res["straight"];
输出结果1:
方块4 梅花6 红桃5 黑桃7 红桃3
是顺子
输出结果2:
方块A 方块2 方块8 黑桃4 梅花9
不是顺子
测试用例:
$data = [["color" => 0, "number" => 1],["color" => 3, "number" => 3],["color" => 2, "number" => 2],["color" => 3, "number" => 5],["color" => 1, "number" => 4]
];
$res = ouput($data);
echo $res["msg"] . "<br>" . $res["straight"];
输出:
黑桃2 黑桃4 红桃3 梅花6 方块5
是顺子
完
这篇关于【PHP】从一副扑克中随机抽5张,并输出结果是不是顺子?(时间60分钟)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!