一个强悍的算24点游戏的PHP程序

php中文网
发布: 2016-06-23 13:59:28
原创
1317人浏览过

算24点游戏大家都玩过吧,那么怎么用程序来计算4个数的随意运算组合得到的结果是24呢?比如,5,5,5,1这四个数,如何凑才能得到结果为24?下面介绍一个很强悍的程序,可以将符合条件的所有组合列出来。

<?phpset_time_limit(0); $values = array(5, 5, 5, 1); $result = 24;$list = array();echo "<pre class="brush:php;toolbar:false;">"; makeValue($values); print_r($list);function makeValue($values, $set=array()) { 	$words = array("+", "-", "*", "/"); 	if(sizeof($values)==1) 	{ 		$set[] = array_shift($values); 		return makeSpecial($set); 	} 		foreach($values as $key=>$value) 	{ 		$tmpValues = $values; 		unset($tmpValues[$key]); 		foreach($words as $word) 		{ 			makeValue($tmpValues, array_merge($set, array($value, $word))); 		} 	} } function makeSpecial($set) { 	$size = sizeof($set);	if($size<=3 || !in_array("/", $set) && !in_array("*", $set)) 	{ 		return makeResult($set); 	}	for($len=3; $len<$size-1; $len+=2) 	{ 		for($start=0; $start<$size-1; $start+=2) 		{ 			if(!($set[$start-1]=="*" || $set[$start-1]=="/" || $set[$start+$len]=="*" || $set[$start+$len]=="/")) 				continue; 			$subSet = array_slice($set, $start, $len); 			if(!in_array("+", $subSet) && !in_array("-", $subSet)) 				continue; 			$tmpSet = $set; 			array_splice($tmpSet, $start, $len-1); 			$tmpSet[$start] = "(".implode("", $subSet).")"; 			makeSpecial($tmpSet); 		} 	} }function makeResult($set) { 	global $result, $list; 	$str = implode("", $set); 	@eval("\$num=$str;"); 	if($num==$result && !in_array($str, $list)) 	$list[] = $str; }?>
登录后复制


程序运行结果为:

Array(    [0] => (5-1/5)*5    [1] => 5*(5-1/5))
登录后复制


 

算家云
算家云

高效、便捷的人工智能算力服务平台

算家云 37
查看详情 算家云
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号