主题:[原创]用JavaScript算24点问题
很小就玩过的一个游戏:从扑克牌里抽出4张牌,就有4个数。用+、-、*、/四则运算,每个数只能用一次,但不能不用,算出24来。(当然不一定有解)
把下面的文本保存成网页文件(*.htm),然后在IE浏览器中打开。输入4个你抽到的数,让电脑也算算。怎么样,有趣吧?
<html>
<head>
<title>算24点</title>
<script language="javascript">
<!--
// Computing 24 points.
// Programmed by j.t.Chang.
var tag = 24;
var a = new Array(4);
var astr = new Array(4);
var f = new Array("+","-","*","/");
var found;
function prn()
{ var s,i;
i = astr[0].length;
s = astr[0].substr(1,i-2);
s = "我想到啦!\n\n"+s+ " = "+tag;
alert(s);
}
function cal(n)
{var i,j,k,p,x,y;
var ta = new Array(4);
var ts = new Array(4);
var tmpstr;
if (n==0)
{ if (Math.abs(a[0]-tag)<0.0000001)
{ found = true;
prn();
}
return ;
}
for (i=0;i<n;i++)
for (j=i+1;j<n+1;j++)
{ x = a[i];
y = a[j];
for (k=0;k<4;k++)
{ for (p=0;p<4;p++)
{ ta[p] = a[p];
ts[p] = astr[p];
}
if ((k==3)&&(y==0));
else{ tmpstr = "("+x+")"+f[k]+"("+y+")";
astr[i] = "(" + astr[i] + f[k] + astr[j] + ")";
a[i] = eval(tmpstr);
for (p=j;p<n;p++)
{ a[p] = a[p+1];
astr[p] = astr[p+1];
}
cal(n-1);
if (found) return;
for (p=0;p<4;p++)
{ a[p] = ta[p];
astr[p] = ts[p];
}
}
if ((k==0)||(k==2));
else
{ if ((k==3)&&(x==0));
else
{ tmpstr = "("+y+")"+f[k]+"("+x+")";
astr[i] = "(" + astr[j] + f[k] + astr[i] + ")";
a[i] = eval(tmpstr);
for (p=j;p<n;p++)
{ a[p] = a[p+1];
astr[p] = astr[p+1];
}
cal(n-1);
if (found) return;
for (p=0;p<4;p++)
{ a[p] = ta[p];
astr[p] = ts[p];
}
}
}
}
}
}
function FindAnswer()
{ a[0] = astr[0] = T1.value * 1;
a[1] = astr[1] = T2.value * 1;
a[2] = astr[2] = T3.value * 1;
a[3] = astr[3] = T4.value * 1;
found = false;
cal(3);
if (!found)
{ alert("我不算了!\n\n"+"想了这么久……还是算不出来!");
}
}
//-->
</script>
</head>
<body>
<b><font color="#FF0000">扑克牌算24点</font></b>
<hr>
<p align="right">j.t.Chang编 E-mail: <a href="mailto:jtchang@21cn.com">jtchang@21cn.com</a></p>
<p>
<br>
很小就玩过的一个游戏:从扑克牌里抽出4张牌,就有4个数。用+、-、*、/四则运算,每个数只能用一次,但不能不用,算出24来。</p>
<br>
<p>玩一下吧!让电脑算算看。</p>
<p>输入4个数字:</p>
<input type="text" name="T1" size="7">
<input type="text" name="T2" size="7">
<input type="text" name="T3" size="7">
<input type="text" name="T4" size="7">
<input type="button" value="算算看吧" name="B1" onclick="FindAnswer()">
</body>
</html>
把下面的文本保存成网页文件(*.htm),然后在IE浏览器中打开。输入4个你抽到的数,让电脑也算算。怎么样,有趣吧?
<html>
<head>
<title>算24点</title>
<script language="javascript">
<!--
// Computing 24 points.
// Programmed by j.t.Chang.
var tag = 24;
var a = new Array(4);
var astr = new Array(4);
var f = new Array("+","-","*","/");
var found;
function prn()
{ var s,i;
i = astr[0].length;
s = astr[0].substr(1,i-2);
s = "我想到啦!\n\n"+s+ " = "+tag;
alert(s);
}
function cal(n)
{var i,j,k,p,x,y;
var ta = new Array(4);
var ts = new Array(4);
var tmpstr;
if (n==0)
{ if (Math.abs(a[0]-tag)<0.0000001)
{ found = true;
prn();
}
return ;
}
for (i=0;i<n;i++)
for (j=i+1;j<n+1;j++)
{ x = a[i];
y = a[j];
for (k=0;k<4;k++)
{ for (p=0;p<4;p++)
{ ta[p] = a[p];
ts[p] = astr[p];
}
if ((k==3)&&(y==0));
else{ tmpstr = "("+x+")"+f[k]+"("+y+")";
astr[i] = "(" + astr[i] + f[k] + astr[j] + ")";
a[i] = eval(tmpstr);
for (p=j;p<n;p++)
{ a[p] = a[p+1];
astr[p] = astr[p+1];
}
cal(n-1);
if (found) return;
for (p=0;p<4;p++)
{ a[p] = ta[p];
astr[p] = ts[p];
}
}
if ((k==0)||(k==2));
else
{ if ((k==3)&&(x==0));
else
{ tmpstr = "("+y+")"+f[k]+"("+x+")";
astr[i] = "(" + astr[j] + f[k] + astr[i] + ")";
a[i] = eval(tmpstr);
for (p=j;p<n;p++)
{ a[p] = a[p+1];
astr[p] = astr[p+1];
}
cal(n-1);
if (found) return;
for (p=0;p<4;p++)
{ a[p] = ta[p];
astr[p] = ts[p];
}
}
}
}
}
}
function FindAnswer()
{ a[0] = astr[0] = T1.value * 1;
a[1] = astr[1] = T2.value * 1;
a[2] = astr[2] = T3.value * 1;
a[3] = astr[3] = T4.value * 1;
found = false;
cal(3);
if (!found)
{ alert("我不算了!\n\n"+"想了这么久……还是算不出来!");
}
}
//-->
</script>
</head>
<body>
<b><font color="#FF0000">扑克牌算24点</font></b>
<hr>
<p align="right">j.t.Chang编 E-mail: <a href="mailto:jtchang@21cn.com">jtchang@21cn.com</a></p>
<p>
<br>
很小就玩过的一个游戏:从扑克牌里抽出4张牌,就有4个数。用+、-、*、/四则运算,每个数只能用一次,但不能不用,算出24来。</p>
<br>
<p>玩一下吧!让电脑算算看。</p>
<p>输入4个数字:</p>
<input type="text" name="T1" size="7">
<input type="text" name="T2" size="7">
<input type="text" name="T3" size="7">
<input type="text" name="T4" size="7">
<input type="button" value="算算看吧" name="B1" onclick="FindAnswer()">
</body>
</html>

您所在位置:





