c#和javascript分别轻松实现计算24点

简介:
24点游戏介绍 :给出4个1-9之间的整数(ms我当年玩的时候是用扑克牌),其中每个数字必须且只用一次;任意使用+-*/ ( ),构造出一个表达式,使得最终结果为24,这就是常见的算24点的游戏(我的老家又叫“加减乘除24”,一语中的)。
记得还是在大学毕业前找工作的时候,面过一家电子商务领域非常有名的公司,其中笔试的一题就是计算24点。当时要求用c语言写出来,虽然笔者思路清晰(玩的很熟嘛^_^),可是c不过关,上机没有通过,想起来现在依然痛心。
现在想想,当年的实现太“中规中矩”了:先用递归构造表达式,接着switch case解析表达式并计算。可是在计算表达式的地方出现问题,印象中switch case了很多次,囧。
工作快两年了,也算积累了一些肤浅的经验。利用现有语言工具的函数或方法,我们计算起来相对而言轻松多了,而且功能更强大。下面就来实现一个通用的24点算法:不限数字大小必须是1-9(为了防止除数为0的情况,0可以特殊考虑,不作为输入参数),不限最终结果(大于小于等于24皆可)。
实现思路
a、构造表达式(所有输入的数字都用到,且只能用到一次。这个用递归人人皆可以)
b、 利用c#的DataTable的Compute方法和javascript的eval函数 ,计算第一步构造出的表达式运算结果
下面将自己的实现贴出来(可是依然不会c实现^_^)。
1、c#代码:

ContractedBlock.gifCode

2、javascript代码:
ContractedBlock.gif Code
测试的网页一并贴出来:
ContractedBlock.gif Code
ps:本人对js函数不熟悉,不知道还有没有更直接的函数。
我个人认为上述两种实现都挺直观的。步骤二里实现计算的算法其实都转移给了语言工具(c#和js),不知道c可不可以。

好了,欢迎其他语言的高手贴出更优秀简洁的代码(尤其是c),共同交流学习,先洗洗睡了。











本文转自JeffWong博客园博客,原文链接:http://www.cnblogs.com/jeffwongishandsome/archive/2009/06/04/1495313.html,如需转载请自行联系原作者

目录
相关文章
|
2月前
|
JavaScript
|
2月前
|
存储 移动开发 JavaScript
NUS CS1101S:SICP JavaScript 描述:五、使用寄存器机进行计算(1)
NUS CS1101S:SICP JavaScript 描述:五、使用寄存器机进行计算(1)
28 0
|
2月前
|
JavaScript
js计算时间为刚刚、几分钟前、几小时前、几天前··
js计算时间为刚刚、几分钟前、几小时前、几天前··
|
4月前
|
JavaScript 前端开发 Java
javascript实现像java、c#之类的sleep暂停的函数功能
javascript实现像java、c#之类的sleep暂停的函数功能
35 0
|
5月前
|
JavaScript 前端开发
Javascript之计算众数和中位数
Javascript之计算众数和中位数
|
13天前
|
JavaScript 前端开发
JavaScript 计算时间差并格式化输出
JavaScript 计算时间差并格式化输出
12 0
|
2月前
|
存储 自然语言处理 JavaScript
NUS CS1101S:SICP JavaScript 描述:五、使用寄存器机进行计算(4)
NUS CS1101S:SICP JavaScript 描述:五、使用寄存器机进行计算(4)
42 0
|
2月前
|
存储 JavaScript 前端开发
NUS CS1101S:SICP JavaScript 描述:五、使用寄存器机进行计算(3)
NUS CS1101S:SICP JavaScript 描述:五、使用寄存器机进行计算(3)
60 0
|
2月前
|
存储 监控 JavaScript
NUS CS1101S:SICP JavaScript 描述:五、使用寄存器机进行计算(2)
NUS CS1101S:SICP JavaScript 描述:五、使用寄存器机进行计算(2)
10 1
|
6月前
|
JavaScript 前端开发 Java
JavaScript的数学计算库:decimal.js
JavaScript的数学计算库:decimal.js
92 0

相关产品

  • 云迁移中心