junstudio 2008-1-31 15:46
一个不错的JS“算24”的代码
[html]<html><head>
<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>[/html]