首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

史上最牛的JS,不是高手勿留言,该如何处理

2012-02-23 
史上最牛的JS,不是高手勿留言HTML codehtmlheadscript/script/headbody条件A:INPUT typete

史上最牛的JS,不是高手勿留言

HTML code
<html><head><script></script></head><body>条件A:<INPUT type="text" name="a" size="5">条件B:<INPUT type="text" name="b" size="5"><br><br><button onclick="func()">开始并计算</button><br><br>结果:<INPUT type="text" name="c"></body></html>

写一个函数func(),能完成以下要求:
要求:1、点击“开始并计算”按钮在“结果”文本框中生成一个随机的四位数字,其中数字不能重复,范围0~9皆可。如:0357、5690、1234。
  2、心里想一个四位数字,与“结果”文本框返回的数字做对比,找出数字和位置都正确的总数填入条件A(人工填入),数字正确但位置不正确的总数填入条件B(人工填入)。如:“结果” 文本框返回的数字为“1234”,我心里的数字为“5213”,则条件A应该填入1,条件B应该填入2。
  3、填入条件后点击“开始并计算”按钮,通过算法重新得到结果,并写入“结果文本框”。
  4、重复填入条件A、B并点击“开始并计算”按钮,直到“结果”文本框的内容和心里想的那个四位数字完全一样。
  5、点击按钮超过11次(不包括11次),该程序便宣告失败,反之,则成功并获得CSDN得分。

如不能理解请,可参见百度:“文曲星猜数字”。
最后:如果您不能设计出程序或提出思路,请勿留言,谢谢配合。



[解决办法]
有点小问题,修改了一下。
HTML code
<html><body><FORM METHOD=POST ACTION="" name="form1"><button onclick="return func();">开始并计算</button><br><br>我猜:<INPUT type="text" name="c">条件A:<INPUT type="text" name="a" size="5">条件B:<INPUT type="text" name="b" size="5">你的数字是:<INPUT type="text" name="d"></FORM></body></html><SCRIPT LANGUAGE="JavaScript"><!--    var total = 0;    var isValid = new Array(5040);    for(var i=0;i<isValid.length;i++)    {        isValid[i]='true';    }    var nums = new Array(5040 * 4);    var pos = 0; //5040   *   4数组中的位置    var a, b, c, d;    for (var aa = 0; aa < 10; aa++) {        for (var bb = 0; bb < 10; bb++) {            if (aa != bb)            {                for (var cc = 0; cc < 10; cc++) {                    if (aa!= cc && bb!= cc)                    {                        for (var dd = 0; dd < 10; dd++) {                            if (aa != dd && bb != dd && cc != dd)                            {                                nums[pos++] = aa;                                nums[pos++] = bb;                                nums[pos++] = cc;                                nums[pos++] = dd;                            }                        }                    }                }            }        }    }    //form1.c.value = getgetNextSeed();    function func()    {                total++        var acount =form1.a.value;        var bcount = form1.b.value;        if(total>1)            setGuessReuslt(acount, bcount);        var guestNum = getgetNextSeed();        if(guestNum==true || acount==4)        {            alert("看,我猜对了吧,服不服,哈哈哈!!!");            if(acount==4)                form1.d.value=form1.c.value;            return true;        }        else        {            form1.c.value=guestNum;            alert("第"+total+"次,我猜:"+guestNum);            }    }    function setGuessReuslt(x,y)    {        if (x == 4) {            return;        }        for (var pos = 0; pos < 5040; pos++) {            if (isValid[pos])            {                var numspos = pos * 4;                if (getMyX(pos) != x) {                    isValid[pos] = false;                    continue;                }                if (getMyY(pos) != y) {                    isValid[pos] = false;                    continue;                }            }        }    }    function getMyX(pos)    {        var myx = 0;        pos *= 4;        if (nums[pos++] == a)            myx++;        if (nums[pos++] == b)            myx++;        if (nums[pos++] == c)            myx++;        if (nums[pos++] == d)            myx++;        return myx;    }    function getMyY(pos) {        var myy = 0;        pos *= 4;        if (nums[pos] == b || nums[pos] == c || nums[pos] == d)            myy++;        if (nums[pos + 1] == a || nums[pos + 1] == c || nums[pos + 1] == d)            myy++;        if (nums[pos + 2] == a || nums[pos + 2] == b || nums[pos + 2] == d)            myy++;        if (nums[pos + 3] == a || nums[pos + 3] == b || nums[pos + 3] == c)            myy++;        return myy;    }    function getgetNextSeed()    {        var others = 0;        var pos = 0;        for (var i = 0; i < 5040; i++) {            if (isValid[i]) {                if (others > 0) {                    others++;                    break;                } else {                    others++;                    pos = i;                }            }        }        if (others == 0) {            alert("你是个赖皮狗,前面你回答错了,查查吧");            return false;        }        if (others == 1) {            var i = pos * 4;            alert("我猜这个数一定是" + nums[i++] + nums[i++] + nums[i++] + nums[i++])            form1.d.value=""+nums[i++] + nums[i++] + nums[i++] + nums[i++];            return true;        }        for (var i = 0; i < 5040; i++) {            if (isValid[i]) {                i =i*4;                a = nums[i];                b = nums[i + 1];                c = nums[i + 2];                d = nums[i + 3];                return (""+ nums[i++] + nums[i++] + nums[i++] + nums[i++]);            }        }    }//--></SCRIPT> 

热点排行