24点计算
第一个数:
第二个数:
第三个数:
第四个数:
测试结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
<script language="JavaScript"> function pt4(num) { osym=["+","-","*","/",")*",")/","*(","/(",")*(",")/("]; symarr=new Array(); for(var i=0;i<10*10*10;i++) { symarr[i]=[osym[i%10],osym[Math.floor((i%100)/10)],osym[Math.floor((i%1000)/100)]]; } for(var i=0;i<10*10*10;i++) { sym=symarr[i]; if (i==512) { i; } arr=new Array(); arr[0]=""+num[0]+".0"+sym[0]+num[1]+".0"+sym[1]+num[2]+".0"+sym[2]+num[3]+".0"+""; arr[1]="("+num[0]+".0"+sym[0]+num[1]+".0"+sym[1]+num[2]+".0"+sym[2]+num[3]+".0"+""; arr[2]="("+num[0]+".0"+sym[0]+num[1]+".0"+sym[1]+num[2]+".0"+sym[2]+num[3]+".0"+")"; arr[3]=""+num[0]+".0"+sym[0]+num[1]+".0"+sym[1]+num[2]+".0"+sym[2]+num[3]+".0"+")"; for(var j=0;j<4;j++) { expa=arr[j]; try { myans=Math.floor(eval(expa)); if(myans==24) return(expa.replace(/.0/g,"")+"="+myans); } catch(e) { continue; } } } return "枚举失败"; } </script> 24点计算 <br> 第一个数: <input type=text id=num1 name=num1/><br> 第二个数: <input type=text id=num2 name=num2/><br> 第三个数: <input type=text id=num3 name=num3/><br> 第四个数: <input type=text id=num4 name=num4/><br><br> 测试结果: <input type=text id=ans name=ans/><br><br> <input type=button onclick="document.all.ans.value=pt4([document.all.num1.value,document.all.num2.value,document.all.num3.value,document.all.num4.value])" value="开始尝试枚举"/> |
Python的话,调用 python xx.py 10 10 4 4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import os import sys def pt4(num): osym=["+","-","*","/",")*",")/","*(","/(",")*(",")/("] symarr=[] for i in range (0,10*10*10): symarr.append([osym[i%10],osym[(i%100)/10],osym[(i%1000)/100]]) for sym in symarr: arr=[] arr.append(""+num[0]+".0"+sym[0]+num[1]+".0"+sym[1]+num[2]+".0"+sym[2]+num[3]+".0"+"") arr.append("("+num[0]+".0"+sym[0]+num[1]+".0"+sym[1]+num[2]+".0"+sym[2]+num[3]+".0"+"") arr.append("("+num[0]+".0"+sym[0]+num[1]+".0"+sym[1]+num[2]+".0"+sym[2]+num[3]+".0"+")") arr.append(""+num[0]+".0"+sym[0]+num[1]+".0"+sym[1]+num[2]+".0"+sym[2]+num[3]+".0"+")") for expa in arr: try: var=eval(expa) if var==24: print expa+"="+str(var) except: continue onum=sys.argv onum.reverse() onum.pop() onum.reverse() num=onum pt4(num) |
随便试了一组数
4,1,2,5
枚举失败