相当棒的24点游戏算法,Javascript写的,不懂,谁能翻译成C/C++?
来源:互联网 发布:矩阵是什么时候学的 编辑:程序博客网 时间:2024/05/16 03:06
24点算法
游戏地址:http://www.prcer.com/tools/24/24-1.html
Javascript代码:
- <script language="JavaScript">
- // 程序作者:海浪
- // 日期:2005-8-13
- function lop(j)
- {
- if(j>0)
- {
- var ss = lop(j-1);
- var px = "";
- var oo = "$1"+j+"$2";
- for(var k=0; k<=j; k++)
- {
- var re = new RegExp("(//d{"+k+"})(.*?;)","g");
- px += ss.replace(re,oo);
- }
- return px;
- }
- else
- return "0;";
- }
- var gt = lop(3).slice(0,-1).split(";");
- for(var i=0; i<gt.length; i++)
- gt[i] = gt[i].split("");
- var ot = [];
- var op = ["+","-","*","/"];
- for(var x=0; x<4; x++)
- for(var y=0; y<4; y++)
- for(var z=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)";
- }
- ///////////////////////////////////////////////////////////////
- var ggcs;
- function ggcsclass()
- {
- this.pjys = 0;
- this.zq = 0;
- this.cw = 0;
- this.hl = 0;
- this.gx();
- }
- function ggcsclass.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;
- }
- function ggcsclass.prototype.phl()
- {
- this.hl++;
- this.gx();
- k_jg.innerText = "此题被忽略!!";
- }
- function ggcsclass.prototype.pcw()
- {
- this.cw++;
- this.gx();
- k_jg.innerText = "错误!!";
- }
- function ggcsclass.prototype.pzq()
- {
- var d = jcsl.endDate();
- this.pjys += d/1000;
- this.zq++;
- this.gx();
- k_jg.innerText = "正确!用时"+Math.round(d/10)/100+"秒!";
- }
- window.onload = function()
- {
- ggcs = new ggcsclass();
- }
- ///////////////////////////////////////////////////////////////
- var jcsl=null;
- function jclass()
- {
- this.xpa = [];
- this.ssjg = "";
- this.wx = 1E-10;
- this.date = null;
- }
- function jclass.prototype.rnd()
- {
- for(var ii=0; ii<4; ii++)
- this.xpa[ii] = Math.floor(Math.random()*10)+1;
- }
- function jclass.prototype.fapai()
- {
- for(var ii=0; ii<4; ii++)
- document.getElementById("pk"+ii).innerText = this.xpa[ii];
- this.date = new Date();
- }
- function jclass.prototype.endDate()
- {
- return new Date()-this.date;
- }
- function jclass.prototype.jw()
- {
- var a,b,c,d;
- this.ssjg= "";
- for(var i=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(var h=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));
- }
- }
- function jclass.prototype.jcf(t)
- {
- var str = t;
- var zz1 = t.replace(/[/(/)]/g,"");
- var zz2 = t.replace(/[/(/)] /g,"");
- var zz3 = t.replace(/[/(/)](?! )/g,"");
- if(Math.abs(eval(zz1)-24)<=this.wx)
- str = zz1;
- else if(Math.abs(eval(zz2)-24)<=this.wx)
- str = zz2;
- else if(Math.abs(eval(zz3)-24)<=this.wx)
- str = zz3;
- var res = str.replace(/ /g,"")+"=24/n";
- if(this.ssjg.indexOf(res)==-1)
- this.ssjg += res;
- }
- function jclass.prototype.scda()
- {
- sskgxx.innerText = "全部答案:/n"+this.ssjg;
- }
- function jclass.prototype.gx(ss)
- {
- var sw1 = 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 "算术表达式格式不正确";
- var str = "#"+RegExp.$1+"|#"+RegExp.$2+"|#"+RegExp.$3+"|#"+RegExp.$4+"|";
- for(var ii=0; ii<4; ii++)
- {
- var lok = "#"+this.xpa[ii]+"|";
- if(str.indexOf(lok)!=-1)
- str = str.replace(lok,"");
- else
- return "算术表达式中数字不对";
- }
- return "yes";
- }
- //////////////////////////////////////////////////////////////
- function fpaaSystem()
- {
- if(jcsl!=null)
- ggcs.phl();
- jcsl = new jclass();
- do {
- jcsl.rnd();
- jcsl.jw();
- } while(jcsl.ssjg=="");
- k_jg.innerText = "";
- sskgxx.innerText = "";
- gstext.value = "";
- jcsl.fapai();
- }
- function fpaaInput()
- {
- var ins = 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; }
- var vf = jcsl!=null;
- jcsl = new jclass();
- jcsl.xpa = ins.split(",");
- jcsl.jw();
- if(jcsl.ssjg=="") { alert("此题无解!!!");return; }
- if(vf)
- ggcs.phl();
- k_jg.innerText = "";
- sskgxx.innerText = "";
- gstext.value = "";
- jcsl.fapai();
- }
- function ckda()
- {
- if(jcsl==null) return;
- ggcs.phl();
- jcsl.scda();
- jcsl=null;
- }
- function okaa()
- {
- if(jcsl==null) return;
- var gs = gstext.value;
- var str = 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;
- }
- function tocs(n)
- {
- if(jcsl==null) return;
- gstext.value+=jcsl.xpa[n];
- }
- </script>
谁能翻译下呢?
翻译出来的发邮件给我哦:hm.y@live.cn
- 相当棒的24点游戏算法,Javascript写的,不懂,谁能翻译成C/C++?
- 24点游戏的编程算法(C语言实现)
- xilinx中的SDK的C代码不懂的点
- 24点游戏 c语言的实现
- 24点游戏的算法
- 用纯C写的游戏
- C语言写的俄罗斯方块游戏
- C语言写的“斗牛”游戏原代码
- 纯C语言写的:迷宫游戏
- 一个C语言写的2048游戏
- c程序是如何编译成的
- C#.NET常见问题(FAQ)-如何把写好的类编译成dll文件
- C语言的不懂的问题
- 24点游戏算法(C语言实现)
- [华为OJ--C++]097-24点游戏算法
- 24点算法。c++。
- 一个Delphi写的DES算法, 翻译成C#
- 24 点游戏 c语言
- 用C语言编写Windows服务程序
- 委托实例化
- seam发送邮件email示例
- 如何看懂数码单反的规格参数(1)焦距转换系数
- Java EE 5实现Web服务(Web Services)及多种客户端实例-原理
- 相当棒的24点游戏算法,Javascript写的,不懂,谁能翻译成C/C++?
- 基于人本理念的绩效管理体系设计(九)
- 如何看懂数码单反的规格参数(2)像素
- IIS6 配置
- 绝世龙书(30年经典重现)
- 如何看懂数码单反的规格参数(3)对焦系统
- 如何看懂数码单反的规格参数(4)感光度
- 企业绩效考核的有效性研究
- TCP/IP 数据包头格式