简单的 bruce force, 算法如下, 未能证明其正确性.
给定一组数据 (1,2,3,4) 和 操作符 (-,+,*)
则有两种可能结果
((1-2) + 3) * 4
((1-2) * (3+4))
再通过排列 给定的数据和操作符 来重复上述操作
请大家指点指点
- 代码语法等方面如何改进
- 算法上是否正确、如何改进
- 其他
谢谢!
#!/usr/bin/python
from __future__ import division
import os
# cant use: y == 0 and 0 or x / y
# because 0 eval to false, thus when y==0, it still performs x/y
def div (x,y):
if y==0: return 0
return x / y
operation = {'+' : lambda x,y : x + y,
'-' : lambda x,y : x - y,
'*' : lambda x,y : x * y,
'/' : lambda x,y : div(x,y)}
all_ops = operation.keys()
all_number_cand = (1,2,3,4,5,6,7,8,9,10)
def op_perm (ops=all_ops):
return [(i,j,k) for i in ops for j in ops for k in ops]
def number_perm (numbers=all_number_cand):
return [(i,j,k,l) for i in numbers for j in numbers for k in numbers for l in numbers]
### TODO increase the performace, it takes 10s
def main ():
result = []
for n_tuple in number_perm():
for o_tuple in op_perm():
o_stack = list(o_tuple)
n_stack = list(n_tuple)
n_queue = list(n_tuple)
while o_stack:
op = operation[o_stack.pop()]
n_stack.append(op(n_stack.pop(), n_stack.pop()))
n_queue.insert(0, op(n_queue.pop(), n_queue.pop()))
if 24 in n_stack or 24 in n_queue:
result.append((' ').join([str(n_tuple),str(o_tuple),str(n_stack),str(n_queue)]))
file = open('cal_res.txt','a')
for item in result:
file.writelines(item + os.linesep)
file.close()
if __name__=='__main__':
open('cal_res.txt','wb').write('') # any quick method?
main()
分享到:
- 2009-10-30 15:19
- 浏览 818
- 评论(0)
- 论坛回复 / 浏览 (0 / 2479)
- 查看更多
相关推荐
`算24点vbp.vbp`是工程文件,记录了项目的基本信息和引用库,`算24点vbp.vbw`则是工程工作区文件,存储了用户的窗口位置和大小等设置。而`经典24.txt`可能是用于存储一些经典的24点问题或游戏规则的文本文件。 通过...
而"算24点"可能是程序源代码,可能是用Python、Java、C++等语言实现的24点计算程序,通过读取四张牌的值,然后运行程序,输出所有可能的解。 学习和理解24点算法不仅有助于提升数学技能,还能培养编程思维。通过...
在C#编程环境中,开发一个"算24点"的游戏是一项有趣的挑战,它涉及到算法设计、用户界面(UI)创建以及基本的数学逻辑。在这个游戏中,我们移除了扑克牌中的大小王、K、Q、J,并将A视为1,10视为0。每轮游戏,两个...
标题中的“vb 类似扑克牌算24点小游戏 源代码”指的是使用Visual Basic (VB)编程语言开发的一个小型游戏程序,该游戏模仿了经典的扑克牌24点游戏。在这个游戏中,玩家需要从四张随机抽取的扑克牌中,通过加、减、乘...
《算24点比赛软件详解》 算24点,是一项经典的数学智力游戏,它源自中国,考验玩家的计算能力和逻辑思维。在这个数字化时代,算24点比赛软件应运而生,为爱好者们提供了全新的竞技平台。本文将详细介绍算24点比赛...
标题“vb写的算24点”指的是使用Visual Basic(VB)编程语言编写的程序,用于解决经典的数学游戏——24点。24点游戏的基本规则是:从一副扑克牌(去掉大小王)中随机抽出四张牌,用加、减、乘、除、括号等运算方法,...
matlab巧算24点-make24.m 使用举例 >> make24; 1 2 3 4 --> 4*3*2*1 >> make24; 1 5 5 5 --> *5 更多的例子 >> for i=1:10 make24); end 11 3 3 9 --> *9/3 12 7 10 2 --> 12*...
《算24点游戏:智力挑战与算法解析》 算24点游戏,作为一个历史悠久的智力游戏,深受人们喜爱,尤其对于提升心算能力和逻辑思维能力具有显著效果。游戏的基本规则是,从1到13这13个数字中随机抽取四个,通过加、减...
算24点游戏是一种智力游戏,玩家需要通过加、减、乘、除四种基本运算以及括号来改变运算顺序,使得四张扑克牌上的数字(1至9之间)运算后得到24。 首先,我们需要理解问题的核心:给定四个1到9之间的自然数,我们的...
标题中的“游戏-算24点”指的是一个基于C++编程语言开发的多媒体游戏,它的主要目的是通过数学逻辑和计算技巧来解决算24点的问题。这个游戏通常包含一副扑克牌,从中随机抽出四张,玩家的目标是利用加、减、乘、除...
在计算机科学中,算24点是一种基于数学和逻辑思维的游戏,玩家需要通过加、减、乘、除运算,以及括号的使用,使得四张扑克牌上的数字组合运算后得到24。这种问题的解决方法之一就是采用算法中的回溯法。 回溯法是一...
【巧算二十四点】是一种经典的数学游戏,旨在通过加、减、乘、除以及使用括号,将四张扑克牌上的数字组合成24。这个游戏不仅锻炼玩家的数学思维和逻辑推理能力,还提升了快速计算的技能。在这个过程中,掌握一定的...
标题中的“算24点”是指一种数学游戏,玩家需要使用四张扑克牌上的数字,通过加、减、乘、除、括号等运算来得到结果24。在这个上下文中,我们讨论的是一个使用Java编程语言开发的GUI(图形用户界面)程序,它实现了...
24点速算,用来算24点游戏的结果,24点速算,用来算24点游戏的结果
《Delphi 7实现算24点游戏》 在编程世界中,Delphi 7是一款经典的集成开发环境(IDE),以其高效、稳定的编译器和丰富的组件库深受开发者喜爱。本项目是用Delphi 7编写的一个算24点游戏程序,它无需任何额外的第三...
【算24点】游戏是基于数学和策略的娱乐活动,玩家通常使用四张1-13的扑克牌,通过加、减、乘、除、括号等操作尝试计算出结果为24。在这个Java实现的版本中,我们可以通过源码来深入理解其算法和编程技巧。 首先,...
在玩算24点时,首先要理解游戏规则:给定四张包含1到13的扑克牌,目标是通过加、减、乘、除以及括号的使用,使得计算结果等于24,且每张牌只能使用一次。这不仅考验学生的计算能力,更要求他们具备策略性思考和问题...
一个算24点小程序,java写的。
算24点游戏,一个深受人们喜爱的智力挑战游戏,旨在通过四张扑克牌上的数字,利用加、减、乘、除以及括号来得出24这个结果。而在此基础上引入负数,无疑增加了游戏的难度和趣味性。在支持负数的算24点游戏中,玩家...
"算24点"是一个经典的数学游戏,适合各年龄段的人群,可以锻炼玩家的心算能力和逻辑思维。游戏规则简单:给定四张1至13之间的扑克牌,目标是通过加、减、乘、除(允许一次使用括号)运算,使得结果等于24。下面我们...