php数字游戏 计算24算法


Posted in PHP onJune 10, 2012

算法思路:把每一个数字看做一个独立的数学表达式,表达式之间加上标点符号组合成新表达式,一共组合4次,表达式之间的所有组合可以通过递归来实现.
代码如下:

<?php 
/** 
* A 24 maker 
* @version 1.0.0 
* @author laruence<laruence at yahoo.com.cn> 
* @copyright (c) 2009 http://www.laruence.com 
*/ 
class TwentyFourCal { 
public $needle = 24; 
public $precision = '1e-6'; 
function TwentyFourCal() { 
} 
private function notice($mesg) { 
var_dump($mesg); 
} 
/** 
* 取得用户输入方法 
*/ 
public function calculate($operants = array()) { 
try { 
$this->search($operants, 4); 
} catch (Exception $e) { 
$this->notice($e->getMessage()); 
return; 
} 
$this->notice('can\'t compute!'); 
return; 
} 
/** 
* 求24点算法PHP实现 
*/ 
private function search($expressions, $level) { 
if ($level == 1) { 
$result = 'return ' . $expressions[0] . ';'; 
if ( abs(eval($result) - $this->needle) <= $this->precision) { 
throw new Exception($expressions[0]); 
} 
} 
for ($i=0;$i<$level;$i++) { 
for ($j=$i+1;$j<$level;$j++) { 
$expLeft = $expressions[$i]; 
$expRight = $expressions[$j]; 
$expressions[$j] = $expressions[$level - 1]; 
$expressions[$i] = '(' . $expLeft . ' + ' . $expRight . ')'; 
$this->search($expressions, $level - 1); 
$expressions[$i] = '(' . $expLeft . ' * ' . $expRight . ')'; 
$this->search($expressions, $level - 1); 
$expressions[$i] = '(' . $expLeft . ' - ' . $expRight . ')'; 
$this->search($expressions, $level - 1); 
$expressions[$i] = '(' . $expRight . ' - ' . $expLeft . ')'; 
$this->search($expressions, $level - 1); 
if ($expLeft != 0) { 
$expressions[$i] = '(' . $expRight . ' / ' . $expLeft . ')'; 
$this->search($expressions, $level - 1); 
} 
if ($expRight != 0) { 
$expressions[$i] = '(' . $expLeft . ' / ' . $expRight . ')'; 
$this->search($expressions, $level - 1); 
} 
$expressions[$i] = $expLeft; 
$expressions[$j] = $expRight; 
} 
} 
return false; 
} 
function __destruct() { 
} 
} 
/* demo */ 
$tf = new TwentyFourCal(); 
$tf->calculate( array(4,8,8,8) ); 
?>
PHP 相关文章推荐
用ODBC的分页显示
Oct 09 PHP
PHP中HTTP方式下的Gzip压缩传输方法举偶
Feb 15 PHP
使用zend studio for eclipse不能激活代码提示功能的解决办法
Oct 11 PHP
PHP 处理图片的类实现代码
Oct 23 PHP
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
Apr 08 PHP
计算php页面运行时间的函数介绍
Jul 01 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
May 12 PHP
php实现的click captcha点击验证码类实例
Sep 23 PHP
php实现表单多按钮提交action的处理方法
Oct 24 PHP
详解php中的implements 使用
Jun 13 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
Jun 22 PHP
基于laravel belongsTo使用详解
Oct 18 PHP
细谈php中SQL注入攻击与XSS攻击
Jun 10 #PHP
逆序二维数组插入一元素的php代码
Jun 08 #PHP
PHP 年龄计算函数(精确到天)
Jun 07 #PHP
PHP序列号生成函数和字符串替换函数代码
Jun 07 #PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
Jun 07 #PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
Jun 07 #PHP
PHP 文本文章分页代码 按标记或长度(不涉及数据库)
Jun 07 #PHP
You might like
全国FM电台频率大全 - 15 山东省
2020/03/11 无线电
php短信接口代码
2016/05/13 PHP
PHP+Ajax实现验证码的实时验证
2016/07/20 PHP
重定向实现代码
2006/11/20 Javascript
自定义右键属性覆盖浏览器默认右键行为实现代码
2013/02/02 Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
2013/05/17 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
jQuery中:checkbox选择器用法实例
2015/01/03 Javascript
javascript引用类型指针的工作方式
2015/04/13 Javascript
javascript实现仿腾讯游戏选择
2015/05/14 Javascript
javascript禁止访客复制网页内容的实现代码
2015/08/05 Javascript
基于javascript实现动态时钟效果
2020/08/18 Javascript
js设置和获取自定义属性的方法
2016/10/20 Javascript
浅谈javascript中的事件冒泡和事件捕获
2016/12/28 Javascript
JavaScript原生数组Array常用方法
2017/04/06 Javascript
windows下vue-cli及webpack搭建安装环境
2017/04/25 Javascript
实例详解BootStrap的动态模态框及静态模态框
2018/08/13 Javascript
js实现延迟加载的几种方法详解
2019/01/19 Javascript
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
layui 解决form表单点击无反应的问题
2019/10/25 Javascript
JavaScript利用键盘码控制div移动
2020/03/19 Javascript
用python + openpyxl处理excel2007文档思路以及心得
2014/07/14 Python
详解python中的文件与目录操作
2017/07/11 Python
Python配置mysql的教程(推荐)
2017/10/13 Python
Mac下Anaconda的安装和使用教程
2018/11/29 Python
python SVM 线性分类模型的实现
2019/07/19 Python
Python 根据数据模板创建shapefile的实现
2019/11/26 Python
python实现局域网内实时通信代码
2019/12/22 Python
详解Python模块化编程与装饰器
2021/01/16 Python
中国汽车租赁行业头部企业:一嗨租车
2019/05/16 全球购物
美国儿童服装、家具和玩具精品店:Maisonette
2019/11/24 全球购物
2014年党支部学习材料
2014/05/19 职场文书
交通局领导班子群众路线教育实践活动对照检查材料思想汇报
2014/10/09 职场文书
工商行政处罚决定书
2015/06/24 职场文书
2016中秋节月饼促销广告语
2016/01/28 职场文书
python中filter,map,reduce的作用
2022/06/10 Python