查看完整版本: 一个不错的JS“算24”的代码

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]
页: [1]
查看完整版本: 一个不错的JS“算24”的代码