惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
F
Fortinet All Blogs
J
Java Code Geeks
Y
Y Combinator Blog
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
M
MIT News - Artificial intelligence
腾讯CDC
Last Week in AI
Last Week in AI
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Jina AI
Jina AI
Microsoft Security Blog
Microsoft Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Proofpoint News Feed
博客园 - 叶小钗
Recent Announcements
Recent Announcements
T
Tailwind CSS Blog
Engineering at Meta
Engineering at Meta
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
人人都是产品经理
人人都是产品经理
L
LangChain Blog
博客园 - 司徒正美
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

博客园 - NanKe Sir's Blog

设置RDLC报表参数 - NanKe Sir's Blog 用SQL语句查询累计值 C#调用存储过程通用类3 Winform控件拖动 TreeView查找 在 DataGridView 中实现类似 Ctrl + F 的查找功能 正则表达式使用 Collapsing margins CSS基础 打开 mdi 窗体的子窗体 从绑定了数据源的 ListBox 中删除多个选定项 对数据库表进行简单的增删改查操作的通用类 C#存储过程调用 SQL连接查询AND和WHERE的不同 我为什么憎恨Framework SQL选择所最近一条记录 Sql Server 日期格式转换 INSERT INTO SELECT FROM 的用法 无法将输入 xml 文件内容转换为数据集
计算24点代码javascript
NanKe Sir's Blog · 2008-10-11 · via 博客园 - NanKe Sir's Blog

24点游戏介绍:
    给出4个1-9之间的整数,其中每个数字只能且必须使用一次;任意使用 + - * / ( ),构造出一个表达式,使得最终结果为24,这就
是常见的算24点的游戏。本文给出的代码数字范围不限于1-9,个数也不限于4个,类型也可不为整数,结果也可以自己指定,不限于24。但是随着数字个数的增多或数字大小的增大,所用的时间也越长。

 1 ar opts   = ["+","*","-","-","/","/"];
 2 function process(nums, len, aim)
 3 {
 4   for(var i = 0; i < len; i++) { 
 5     for(var j = i+1; j < len; j++) {
 6       var numij = [nums[i],nums[j]];
 7       nums[j] = nums[len - 1];
 8       for(var k = 0; k < 6; k++){                
 9         nums[i] = '(' + numij[k%2+ opts[k] + numij[(!(k%2)*1)] + ')';                
10         if(process(nums, len-1, aim)) {
11           return true;
12         }                
13       }
14       nums[i] = numij[0]; 
15       nums[j] = numij[1];
16     } 
17   }
18   return (len == 1&& (Math.abs((new Function("return" + nums[0])()) - aim) < 0.0000001); 
19 }

上面的十几行代码已经完成了24点的计算,如果得到了可以计算出24点的表达式则返回 true,并将表达式保存在 nums[0] 中,如果给出的数字找不到可以计算出24点的表达式,就返回 false。下面的函数是获取正确的表达式或给出无法计算的提示。

function getexp(aim, nums){
  
if(process(nums, nums.length, aim)){
    
return nums[0].substring(1,nums[0].length-1);
  }
else{
    
return "No expression = " + aim; 
  }
}

你可以自己编写html测试,或者在这里下载:https://files.cnblogs.com/JoeDZ/game24.rar 不过这里对输入做了限制,只能输入整数。