24点算法
游戏地址:http://www.prcer.com/tools/24/24-1.html
Javascript代码:
- <scriptlanguage="JavaScript">
- //程序作者:海浪
- //日期:2005-8-13
- functionlop(j)
- {
- if(j>0)
- {
- varss=lop(j-1);
- varpx="";
- varoo="$1"+j+"$2";
- for(vark=0;k<=j;k++)
- {
- varre=newRegExp("(//d{"+k+"})(.*?;)","g");
- px+=ss.replace(re,oo);
- }
- returnpx;
- }
- else
- return"0;";
- }
- vargt=lop(3).slice(0,-1).split(";");
- for(vari=0;i<gt.length;i++)
- gt[i]=gt[i].split("");
- varot=[];
- varop=["+","-","*","/"];
- for(varx=0;x<4;x++)
- for(vary=0;y<4;y++)
- for(varz=0;z<4;z++)
- {
- ot[ot.length]="((a"+op[x]+"b)"+op[y]+"c)"+op[z]+"d";
- ot[ot.length]="(a"+op[x]+"(b"+op[y]+"c))"+op[z]+"d";
- ot[ot.length]="a"+op[x]+"((b"+op[y]+"c)"+op[z]+"d)";
- ot[ot.length]="a"+op[x]+"(b"+op[y]+"(c"+op[z]+"d))";
- ot[ot.length]="(a"+op[x]+"b)"+op[y]+"(c"+op[z]+"d)";
- }
- ///
- varggcs;
- functionggcsclass()
- {
- this.pjys=0;
- this.zq=0;
- this.cw=0;
- this.hl=0;
- this.gx();
- }
- functionggcsclass.prototype.gx()
- {
- k_pjys.innerText=this.zq==0?0:Math.round(this.pjys/this.zq*100)/100;
- k_zq.innerText=this.zq;
- k_cw.innerText=this.cw;
- k_hl.innerText=this.hl;
- }
- functionggcsclass.prototype.phl()
- {
- this.hl++;
- this.gx();
- k_jg.innerText="此题被忽略!!";
- }
- functionggcsclass.prototype.pcw()
- {
- this.cw++;
- this.gx();
- k_jg.innerText="错误!!";
- }
- functionggcsclass.prototype.pzq()
- {
- vard=jcsl.endDate();
- this.pjys+=d/1000;
- this.zq++;
- this.gx();
- k_jg.innerText="正确!用时"+Math.round(d/10)/100+"秒!";
- }
- window.οnlοad=function()
- {
- ggcs=newggcsclass();
- }
- ///
- varjcsl=null;
- functionjclass()
- {
- this.xpa=[];
- this.ssjg="";
- this.wx=1E-10;
- this.date=null;
- }
- functionjclass.prototype.rnd()
- {
- for(varii=0;ii<4;ii++)
- this.xpa[ii]=Math.floor(Math.random()*10)+1;
- }
- functionjclass.prototype.fapai()
- {
- for(varii=0;ii<4;ii++)
- document.getElementById("pk"+ii).innerText=this.xpa[ii];
- this.date=newDate();
- }
- functionjclass.prototype.endDate()
- {
- returnnewDate()-this.date;
- }
- functionjclass.prototype.jw()
- {
- vara,b,c,d;
- this.ssjg="";
- for(vari=0;i<gt.length;i++)
- {
- a=this.xpa[gt[i][0]]-0;
- b=this.xpa[gt[i][1]]-0;
- c=this.xpa[gt[i][2]]-0;
- d=this.xpa[gt[i][3]]-0;
- for(varh=0;h<ot.length;h++)
- if(Math.abs(eval(ot[h])-24)<=this.wx)
- this.jcf(ot[h].replace("a",a).replace("b",b).replace("c",c).replace("d",d));
- }
- }
- functionjclass.prototype.jcf(t)
- {
- varstr=t;
- varzz1=t.replace(/[/(/)]/g,"");
- varzz2=t.replace(/[/(/)]/g,"");
- varzz3=t.replace(/[/(/)](?!)/g,"");
- if(Math.abs(eval(zz1)-24)<=this.wx)
- str=zz1;
- elseif(Math.abs(eval(zz2)-24)<=this.wx)
- str=zz2;
- elseif(Math.abs(eval(zz3)-24)<=this.wx)
- str=zz3;
- varres=str.replace(//g,"")+"=24/n";
- if(this.ssjg.indexOf(res)==-1)
- this.ssjg+=res;
- }
- functionjclass.prototype.scda()
- {
- sskgxx.innerText="全部答案:/n"+this.ssjg;
- }
- functionjclass.prototype.gx(ss)
- {
- varsw1=ss.match(//(/g),sw2=ss.match(//)/g);
- sw1=(sw1==null)?0:sw1.length;
- sw2=(sw2==null)?0:sw2.length;
- if(sw1!=sw2)
- return"左右括号个数不一样";
- if(!/^/(*(/d+)/)*[/+/-/*//]/(*(/d+)/)*[/+/-/*//]/(*(/d+)/)*[/+/-/*//]/(*(/d+)/)*$/.test(ss))
- return"算术表达式格式不正确";
- varstr="#"+RegExp.$1+"|#"+RegExp.$2+"|#"+RegExp.$3+"|#"+RegExp.$4+"|";
- for(varii=0;ii<4;ii++)
- {
- varlok="#"+this.xpa[ii]+"|";
- if(str.indexOf(lok)!=-1)
- str=str.replace(lok,"");
- else
- return"算术表达式中数字不对";
- }
- return"yes";
- }
- //
- functionfpaaSystem()
- {
- if(jcsl!=null)
- ggcs.phl();
- jcsl=newjclass();
- do{
- jcsl.rnd();
- jcsl.jw();
- }while(jcsl.ssjg=="");
- k_jg.innerText="";
- sskgxx.innerText="";
- gstext.value="";
- jcsl.fapai();
- }
- functionfpaaInput()
- {
- varins=prompt("请输入四个数字(如:5,4,7,10)","");
- if(ins==null)return;
- if(!/^/d{1,2},/d{1,2},/d{1,2},/d{1,2}$/.test(ins)){alert("输入的内容不正确!");return;}
- varvf=jcsl!=null;
- jcsl=newjclass();
- jcsl.xpa=ins.split(",");
- jcsl.jw();
- if(jcsl.ssjg==""){alert("此题无解!!!");return;}
- if(vf)
- ggcs.phl();
- k_jg.innerText="";
- sskgxx.innerText="";
- gstext.value="";
- jcsl.fapai();
- }
- functionckda()
- {
- if(jcsl==null)return;
- ggcs.phl();
- jcsl.scda();
- jcsl=null;
- }
- functionokaa()
- {
- if(jcsl==null)return;
- vargs=gstext.value;
- varstr=jcsl.gx(gs);
- if(str!="yes")
- {
- alert("算式错误:"+str+"!");
- return;
- }
- if(Math.abs(eval(gs)-24)<=jcsl.wx)
- ggcs.pzq();
- else
- ggcs.pcw();
- jcsl.scda();
- jcsl=null;
- }
- functiontocs(n)
- {
- if(jcsl==null)return;
- gstext.value+=jcsl.xpa[n];
- }
- </script>
谁能翻译下呢?
翻译出来的发邮件给我哦:hm.y@live.cn