php 24点算法,PHP实现简单的24点游戏

忽然想到做一个小应用,需要使用到24点判断,故而写一个简单版的。

代码粗糙,轻拍。

/**

* 24点游戏

* @author 长安猎人

*/

$arr = [10, 4, 5, 3];

$opArr = ["+", "-", "*", "/"];

$result = calculate($arr);

if($result == NULL) {

echo "无法找到答案" . PHP_EOL;

}

echo $result;

function calculate($arr) {

global $opArr;

if(count($arr) == 1) {

$str = substr($arr[0], 1, -1);

eval("\$num = " . $str . ";");

if($num == 24) return $str;

return;

}

list($prev, $next) = [$arr[0], $arr[1]];

$combine = [];

for($i = 0; $i < 4; $i++) {

$combine[] = "($prev" . $opArr[$i] . "$next)";

}

$arrFree = array_slice($arr, 2);

$newArr = [];

$combineLen = count($combine);

for($i = 0; $i < $combineLen; $i++) {

$temp = $arrFree;

array_unshift($temp, $combine[$i]); #插入剩余项的头部

$newArr[] = $temp;

}

$newLen = count($newArr);

for ($i=0; $i < $newLen; $i++) {

$res = calculate($newArr[$i]);

if(NULL != $res) return $res;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值