玩了下~~失败了~~先把今天的试验结果留这~~(可用~但有些不符合要求:()
明天再做:(
<?php
set_time_limit(10);
class Card
{
/**
* 计算各种符号的结果
*/
public function getCountResult($a,$b)
{
$result = array();
$result[1] = $a+$b;
$result[2] = $a-$b;
$result[3] = $a*$b;
$result[4] = (!empty($b))?$a/$b:0;
return $result;
}
/**
* 获取 2 张扑克的所有计算值
*/
public function getMyCard()
{
$cardNum = 3; # 牌数 调试时试用小数值快些:)
for($i=1;$i<=$cardNum;$i++)
{
for($j=1;$j<=$cardNum;$j++)
{
$result[] = $this->getCountResult($i,$j);
$Card[] = array($i,$j);
}
}
$myCard['Result'] = $result; # 结果集合
$myCard['Card'] = $Card; # 组成集合
return $myCard;
}
/**
* 取得结果
*
*/
public function getResult()
{
$result = $this->getMyCard();
foreach ($result['Result'] as $keyA => $valueA)
{
for($i=1;$i<=4;$i++)
{
foreach ($result['Result'] as $keyB => $valueB)
{
for($j=1;$j<=4;$j++)
{
$finalResult = $this->getCountResult($valueA[$i],$valueB[$j]); if (in_array(24,$finalResult)) # 结果
{
$symbol_AB = $i;
$symbol_BC = array_search(24,$finalResult); # b c 两牌之间的符号
$symbol_CD = $j; echo (
'('.$result['Card'][$keyA][0].
$this->getSymbol($symbol_AB).
$result['Card'][$keyA][1].')'.
$this->getSymbol($symbol_BC).'('.
$result['Card'][$keyB][0].
$this->getSymbol($symbol_CD).
$result['Card'][$keyB][1].')<br />'
);
}
}
}
}
}
}
/**
* 获取计算符号
*/
public function getSymbol($symbolKey)
{
$symbol = null;
switch ($symbolKey)
{
case 1;
$symbol = '+';
break;
case 2;
$symbol = '-';
break;
case 3;
$symbol = '*';
break;
case 4;
$symbol = '/';
break;
}
return $symbol;
}
}
$card = new Card();
$card->getResult();
?>
明天再做:(
<?php
set_time_limit(10);
class Card
{
/**
* 计算各种符号的结果
*/
public function getCountResult($a,$b)
{
$result = array();
$result[1] = $a+$b;
$result[2] = $a-$b;
$result[3] = $a*$b;
$result[4] = (!empty($b))?$a/$b:0;
return $result;
}
/**
* 获取 2 张扑克的所有计算值
*/
public function getMyCard()
{
$cardNum = 3; # 牌数 调试时试用小数值快些:)
for($i=1;$i<=$cardNum;$i++)
{
for($j=1;$j<=$cardNum;$j++)
{
$result[] = $this->getCountResult($i,$j);
$Card[] = array($i,$j);
}
}
$myCard['Result'] = $result; # 结果集合
$myCard['Card'] = $Card; # 组成集合
return $myCard;
}
/**
* 取得结果
*
*/
public function getResult()
{
$result = $this->getMyCard();
foreach ($result['Result'] as $keyA => $valueA)
{
for($i=1;$i<=4;$i++)
{
foreach ($result['Result'] as $keyB => $valueB)
{
for($j=1;$j<=4;$j++)
{
$finalResult = $this->getCountResult($valueA[$i],$valueB[$j]); if (in_array(24,$finalResult)) # 结果
{
$symbol_AB = $i;
$symbol_BC = array_search(24,$finalResult); # b c 两牌之间的符号
$symbol_CD = $j; echo (
'('.$result['Card'][$keyA][0].
$this->getSymbol($symbol_AB).
$result['Card'][$keyA][1].')'.
$this->getSymbol($symbol_BC).'('.
$result['Card'][$keyB][0].
$this->getSymbol($symbol_CD).
$result['Card'][$keyB][1].')<br />'
);
}
}
}
}
}
}
/**
* 获取计算符号
*/
public function getSymbol($symbolKey)
{
$symbol = null;
switch ($symbolKey)
{
case 1;
$symbol = '+';
break;
case 2;
$symbol = '-';
break;
case 3;
$symbol = '*';
break;
case 4;
$symbol = '/';
break;
}
return $symbol;
}
}
$card = new Card();
$card->getResult();
?>
解决方案 »
- 求一段php授权代码
- dw5写的php代码,在网页上中文是显示乱码
- 数据处理
- ecshop本地登录后台,输入用户和密码时候没有反应
- 怎讓textbox隱藏
- php处理excel表格的问题
- php网站访问异常,服务器在客户机房,正常运行,但是客户那边无法正常操作系统!
- 我做的php搜索,为什么用户在搜索字母a的时候,程序会把所有的记录都列出来呢?2小时内结帖,给分。
- 我会ASP+SQLServer,PHP+MySQL好学吗?请大侠们给点意见。
- 哪位帮帮我?怎么在win98下装上php呢?我这两天头都装大了,还是不行?
- 求助日期时间的正规表达式(0000-00-00 00:00:00)
- 散分, 散分, 散分
又丢人了:(
$result = array();
foreach (range(1, 13) as $v1) {
foreach (range(1, 13) as $v2) {
foreach (range(1, 13) as $v3) {
foreach (range(1, 13) as $v4) {
foreach (array("+", "-", "*", "/") as $o1) {
foreach (array("+", "-", "*", "/") as $o2) {
foreach (array("+", "-", "*", "/") as $o3) {
foreach (array("((%d %s %d) %s %d) %s %d", "(%d %s %d) %s (%d %s %d)", "(%d %s (%d %s %d)) %s %d", "%d %s ((%d %s %d) %s %d)", "%d %s (%d %s (%d %s %d))") as $order) {
$e = sprintf($order, $v1, $o1, $v2, $o2, $v3, $o3, $v4);
eval("\$r = ".$e.";");
if (24 === $r) {
$result[] = $e;
}
}
}
}
}
}
}
}
}
file_put_contents(dirname(__FILE__)."/24result.txt", implode("\n", $result));
?>
相当于用不同的方式构造出符号全排.
得出的结果只有 10101 个.<?php
set_time_limit(100);
class Card
{
/**
* 计算各种符号的结果
*/
public function getCountResult($a,$b)
{
$result = array();
$result[1] = $a.'+'.$b;
$result[2] = $a.'-'.$b;
$result[3] = $a.'*'.$b;
$result[4] = (!empty($b))?$a.'/'.$b:0;#除0情况这里不存在.
return $result;
}
/**
* 获取 2 张扑克的所有计算值
*/
public function getMyCard()
{
$cardNum = 13; # 牌数 调试时试用小数值快些:)
for($i=1;$i<=$cardNum;$i++)
{
for($j=1;$j<=$cardNum;$j++)
{
$result[] = $this->getCountResult($i,$j);
$Card[] = array($i,$j);
}
}
$myCard['Result'] = $result; # 结果集合
$myCard['Card'] = $Card; # 组成集合
return $myCard;
}
/**
* 取得结果
*
*/
public function getResult()
{
$flushResult = null;
$result = $this->getMyCard();
foreach ($result['Result'] as $keyA => $valueA)
{
for($i=1;$i<=4;$i++)
{
foreach ($result['Result'] as $keyB => $valueB)
{
for($j=1;$j<=4;$j++)
{
$thisResult = $this->getCountResult($valueA[$i],$valueB[$j]);
for ($k=1;$k<=4;$k++)
{ eval('$finalResult='.$thisResult[$k].';'); if ($finalResult == 24) # 结果
{
$symbol_AB = $i;
$symbol_BC = $k; # b c 两牌之间的符号
$symbol_CD = $j; $flushResult[] = (
$result['Card'][$keyA][0].
$this->getSymbol($symbol_AB).
$result['Card'][$keyA][1].
$this->getSymbol($symbol_BC).
$result['Card'][$keyB][0].
$this->getSymbol($symbol_CD).
$result['Card'][$keyB][1]
); }
}
}
}
}
}
return $flushResult;
}
/**
* 获取计算符号
*/
public function getSymbol($symbolKey)
{
$symbol = null;
switch ($symbolKey)
{
case 1;
$symbol = '+';
break;
case 2;
$symbol = '-';
break;
case 3;
$symbol = '*';
break;
case 4;
$symbol = '/';
break;
}
return $symbol;
}
}
$card = new Card();
$flushResult = $card->getResult();
file_put_contents(dirname(__FILE__)."/24result.txt", implode("\n", $flushResult));
?>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>24</title>
<style>
INPUT{border: 1 solid #0099CC;}
</style>
</head><body link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF">
<script>
/*-------------------------------------
原理阐述:四个数字,判断怎样得到 24 可能而且没有重复的组合方式如下:可能的组合方式
a+b+c+d
a+(b+c)+d
(a+b)+c+d
a+b+(c+d)
a+(b+c+d)
(a+b+c)+d
(a+b)+(c+d)
(a+(b+c))+d
((a+b)+c)+d
a+(b+(c+d))
a+((b+c)+d) 依据这个规律,我们可以得出…… 下面这段代码~~ 哈哈……---------------------------------------*/
var num = null;
var sign = new Array("+","-","*","/");
function returnSZ()
{
for(s1=0; s1<4; s1++)
{
for(s2=0; s2<4; s2++)
{
for(s3=0; s3<4; s3++)
{
for(n1=0; n1<4; n1++)
{
for(n2=0; n2<4; n2++)
{
if(n2==n1)
continue;
for(n3=0; n3<4; n3++)
{
if(n3==n1||n3==n2)
continue;
for(n4=0; n4<4; n4++)
{
if(n4==n1||n4==n2||n4==n3)
continue;
var str = "";
/*--------------------- 可能的组合方式
a+b+c+d
a+(b+c)+d
(a+b)+c+d
a+b+(c+d)
a+(b+c+d)
(a+b+c)+d
(a+b)+(c+d)
(a+(b+c))+d
((a+b)+c)+d
a+(b+(c+d))
a+((b+c)+d)
----------------------*/
str = num[n1]+ sign[s1] +num[n2]+ sign[s2] +num[n3]+ sign[s3] +num[n4];
if(judgeNum(str))
{
result.value=(str);
return;
}
str = num[n1]+ sign[s1] +"("+num[n2]+ sign[s2] +num[n3]+")"+ sign[s3] +num[n4];
if(judgeNum(str))
{
result.value=(str);
return;
}
str = "("+num[n1]+ sign[s1] +num[n2]+")"+ sign[s2] +num[n3]+ sign[s3] +num[n4];
if(judgeNum(str))
{
result.value=(str);
return;
}
str = num[n1]+ sign[s1] +num[n2]+ sign[s2] +"("+num[n3]+ sign[s3] +num[n4]+")";
if(judgeNum(str))
{
result.value=(str);
return;
}
str = num[n1]+ sign[s1] +"("+num[n2]+ sign[s2] +num[n3]+ sign[s3] +num[n4]+")";
if(judgeNum(str))
{
result.value=(str);
return;
}
str = "("+num[n1]+ sign[s1] +num[n2]+ sign[s2] +num[n3]+")"+ sign[s3] +num[n4];
if(judgeNum(str))
{
result.value=(str);
return;
}
str = "("+num[n1]+ sign[s1] +num[n2]+")"+ sign[s2] +"("+num[n3]+ sign[s3] +num[n4]+")";
if(judgeNum(str))
{
result.value=(str);
return;
}
str = "("+num[n1]+ sign[s1] +"("+num[n2]+ sign[s2] +num[n3]+"))"+ sign[s3] +num[n4];
if(judgeNum(str))
{
result.value=(str);
return;
}
str = "(("+num[n1]+ sign[s1] +num[n2]+")"+ sign[s2] +num[n3]+")"+ sign[s3] +num[n4];
if(judgeNum(str))
{
result.value=(str);
return;
}
str = num[n1]+ sign[s1] +"("+num[n2]+ sign[s2] +"("+num[n3]+ sign[s3] +num[n4]+"))";
if(judgeNum(str))
{
result.value=(str);
return;
}
str = num[n1]+ sign[s1] +"(("+num[n2]+ sign[s2] +num[n3]+")"+ sign[s3] +num[n4]+")";
if(judgeNum(str))
{
result.value=(str);
return;
}
}
}
}
}
}
}
}
result.value=("这个好像不行吧~~~~");
} function judgeNum(theline)
{
if(eval(theline)==24)
return true;
else
return false;
}function RunSZ()
{
var ArrayBox = document.getElementsByName("box");
num = null;
num = new Array();
for(i=0;i<4;i++)
{
var str = ArrayBox[i].value;
if(str=="")
{
alert("第"+(i+1)+"个数字没有填");
ArrayBox[i].focus();
return;
}
else
{
if(!str.match(/\D/g))
num[i] = ArrayBox[i].value;
else
{
alert("第"+(i+1)+"个数字有不为数字的字符");
ArrayBox[i].focus();
return;
}
}
}
returnSZ();
}</script>
<div align="center">
<table border="0" width="324" style="font-family: 宋体; font-size: 9pt; border: 1 solid #0099CC" height="192" cellspacing="0" cellpadding="0">
<tr>
<td width="308" height="28" align="center" bgcolor="#0099CC" style="color: #FFFFFF" colspan="2">
<p align="left">|| 24 点 游戏</td>
</tr>
<center>
<tr>
<td width="82" height="40" align="center" bgcolor="#0099CC" style="color: #FFFFFF; border-top: 1 solid #DDFFEF">第一个数字</td>
<td width="226" height="40" align="center" bgcolor="#DDFFEF"><input type="text" name="box" size="20" ></td>
</tr>
<tr>
<td width="82" height="40" align="center" bgcolor="#0099CC" style="color: #FFFFFF">第一个数字</td>
<td width="226" height="40" align="center" bgcolor="#DDFFEF"><input type="text" name="box" size="20"></td>
</tr>
<tr>
<td width="82" height="40" align="center" bgcolor="#0099CC" style="color: #FFFFFF">第三个数字</td>
<td width="226" height="40" align="center" bgcolor="#DDFFEF"><input type="text" name="box" size="20"></td>
</tr>
<tr>
<td width="82" height="40" align="center" bgcolor="#0099CC" style="color: #FFFFFF; border-bottom: 1 solid #DDFFEF">第四个数字</td>
<td width="226" height="40" align="center" bgcolor="#DDFFEF"><input type="text" name="box" size="20"></td>
</tr>
<tr>
<td width="82" height="60" align="center" bgcolor="#0099CC" style="color: #FFFFFF"><a href="javascript:;" onclick=RunSZ()>计算结果</a></td>
<td width="226" height="60" align="center" bgcolor="#0099CC"><input type="text" id="result" size="25"></td>
</tr>
</table>
</center>
</div>
</body></html>