`
yesjavame
  • 浏览: 688392 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

python计算24点

阅读更多

输入4个数字, 输出所有用加减乘除结果为24的表达式. 代码如下:

def isEqual(num1, num2):
return abs(num1 - num2) < 1e-5;
# End of isEqual().

def expressionsFromExpOpSeq(expSeq, opSeq):
assert(len(expSeq) == len(opSeq) + 1)
if 1 == len(expSeq):
yield expSeq[0]
return
# End of if.

for idx in range(len(opSeq)):
newExp = "(%s %s %s)" % (
expSeq[idx], opSeq[idx], expSeq[idx+1])
newExpSeq = expSeq[:idx] + [newExp] + expSeq[idx+2:]
newOpSeq = opSeq[:idx] + opSeq[idx+1:]
for exp in expressionsFromExpOpSeq(newExpSeq, newOpSeq):
yield exp
# End of for.
# End of expressionsFromExpOpSeq().

def expressionsFromExpSeq(expSeq):
for opSeq in selections("+-*/", len(expSeq) - 1):
for exp in expressionsFromExpOpSeq(expSeq, opSeq):
yield exp
# End of expressionsFromExpSeq().

def expressions(numList):
'''Generate expressions.
'''
if (0 == len(numList)): return;
for numPerm in permutations(numList):
expSeq = [str(n) for n in numPerm]
for exp in expressionsFromExpSeq(expSeq):
yield exp
# End of expressions().

numTuple=input("Please input 4 numbers to computer 24:(use ',' to divide them)")
numList=[float(i) for i in numTuple]
# numList = [1.0,4.0,5.0,6.0]
TARGET = 24.0
print("Your input is: %s" % numList)

for exp in expressions(numList):
try:
if isEqual(TARGET, eval(exp)):
print("%s = %s" % (exp, TARGET))
except ZeroDivisionError:
pass
# End of try.
# End of for.

其中计算排列组合的代码来自Cookbook:

# Recipe 19.15. Generating Permutations, Combinations, and Selections

def _combinators(_handle, items, n):
''' factored-out common structure of all following combinators '''
if n==0:
yield [ ]
return
for i, item in enumerate(items):
this_one = [ item ]
for cc in _combinators(_handle, _handle(items, i), n-1):
yield this_one + cc
def combinations(items, n):
''' take n distinct items, order matters '''
def skipIthItem(items, i):
return items[:i] + items[i+1:]
return _combinators(skipIthItem, items, n)
def selections(items, n):
''' take n (not necessarily distinct) items, order matters '''
def keepAllItems(items, i):
return items
return _combinators(keepAllItems, items, n)
def permutations(items):
''' take all items, order matters '''
return combinations(items, len(items))

示例:

Please input 4 numbers to computer 24:(use ',' to divide them)1,4,5,6
Your input is: [1.0, 4.0, 5.0, 6.0]
(4.0 / (1.0 - (5.0 / 6.0))) = 24.0
(6.0 / ((5.0 / 4.0) - 1.0)) = 24.0

也可以输入多个数字:

Please input 4 numbers to computer 24:(use ',' to divide them)2,3,4,5.5,6
Your input is: [2.0, 3.0, 4.0, 5.5, 6.0]
((2.0 - (3.0 / (4.0 - 5.5))) * 6.0) = 24.0
(2.0 * (3.0 - ((4.0 - 5.5) * 6.0))) = 24.0
((2.0 + (3.0 / (5.5 - 4.0))) * 6.0) = 24.0
......

参考:

* 一个 Lua 的凑24程序 ( http://blog.csdn.net/shell_picker/archive/2010/11/25/6034158.aspx )

* python 算24的题目 ( http://zhidao.baidu.com/question/207378450.html )

分享到:
评论

相关推荐

    24点计算程序(python)

    计算24点的python程序。例: Input: $ python z24.py 1 5 5 5 Output: 5*(5-(1/5)) end.

    潮流计算 python.zip_Python潮流计算_python潮流_python电力_潮流计算python_电网负荷 pyt

    本压缩包"潮流计算 python.zip"可能包含了关于如何使用Python进行潮流计算的相关资源和代码示例。 潮流计算的主要目的是确定电力网络中的电压、功率、电流等关键运行参数,如节点电压角度、电压幅值、线路和变压器...

    python 计算作物蒸腾量

    Python作为一种通用且易用的编程语言,被广泛用于处理数据和科学计算,包括农业领域的蒸腾量计算。本篇将详细介绍如何使用Python来计算作物的蒸腾量(ETC)以及参照蒸腾量(ET0),并基于一个气象站一年的数据进行...

    【Python应用实战案例】Python计算任意区域内格点数据的平均值.zip

    在本实践案例中,我们将深入探讨如何使用Python编程语言来计算特定区域内格点数据的平均值。这个案例可能适用于环境科学、气象学、地理信息系统(GIS)等领域,其中经常需要处理大量的网格化数据,例如气候模型输出...

    python科学计算基础教程电子版-Python科学计算基础(整理).pdf

    Python是一种强大的编程语言,尤其在科学计算领域,它凭借其面向对象、动态特性和简洁的语法,成为快速开发和大规模软件构建的理想选择。随着诸如NumPy、SciPy、matplotlib等库的发展,Python在科学计算的地位日益...

    【Python在气象中的实战应用案例】Python计算涡度、散度、涡度平流和温度平流.zip

    【Python在气象中的实战应用案例】Python计算涡度、散度、涡度平流和温度平流.zip

    python24点计算.py

    python实现24点游戏:由用户自己输入4个数字(也可由计算机随机产生),然后由计算机填+-*/和(),使计算结果等于24

    python 计算矩形框面积的交并比

    利用 python 计算矩形框面积的交并比,利用 python 简单计算矩形框面积的交并比,

    4张牌算24游戏,python编写

    小时侯常玩的,随机抽4张牌计算24点游戏。 终于用自己喜欢的python实现了。 启动方法: c:\你的目录\python mainDriver.py 几个按钮的作用: 点击start/restart按钮重新抽取4张牌, 在文本框中可输入你的答案, 点击...

    python计算银行理财

    用python计算各个理财产品的不同理财收益比较,包括复利计算

    利用python实现的简单的24点游戏.rar

    通过这个24点游戏,初学者可以锻炼对Python控制流程的理解,学习如何处理随机事件,以及如何使用Python进行数学计算。同时,这也是一个很好的实践项目,可以提升问题解决和编程技能。对于更复杂的功能,如自动寻找...

    [实训解析]Python 计算思维训练——SAR图像处理-第2关:读入一个目录下所有图像_5307.pdf

    该标题表明,这是一个 Python 计算思维训练的实践解析,重点在于SAR图像处理,并且是第二关,主题是读取一个目录下所有图像。 描述解析 "[实训解析]Python 计算思维训练——SAR图像处理-第2关:读入一个目录下所有...

    python实现一个点绕另一个点旋转后的坐标

    总结来说,上述内容介绍了一个利用Python进行二维坐标点旋转变换的基本方法。通过定义旋转中心点、旋转角度和被旋转点,可以应用正余弦函数计算旋转后点的新坐标。Python语言通过使用数学库和绘图库,使得该过程变得...

    Python计算一个点到所有点的欧式距离实现方法

    以上这篇Python计算一个点到所有点的欧式距离实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:python计算两个地址之间的距离方法Python实现的...

    python计算生态 笔记.md

    python计算生态 笔记.md

    计算24点(python)

    利用python编写的24点计算程序,能找出所有种类的结果。

    Python24点游戏

    在Python编程领域,24点游戏是一个经典的项目,它结合了数学逻辑与编程技巧。这个程序的核心在于如何设计算法来解决24点问题,以及如何构建一个用户友好的界面来呈现游戏过程。以下是对该程序相关知识点的详细阐述:...

    Python计算机二级试题

    12套Python二级考试试题将涵盖以上知识点,并可能包含一些实际操作题目,测试考生的实际编程能力。通过解答这些题目,考生不仅能巩固理论知识,还能提升编程实践能力。记得在练习时,不仅要关注正确答案,还要理解为...

    python实现均值变点法计算地形起伏度

    本项目利用Python编程语言,结合统计学上的均值变点法,来计算和分析实验区的地势起伏度,以期提升这一领域的研究效率和准确性。 均值变点法是一种统计分析方法,常用于检测时间序列数据中的结构变化点,即数据均值...

Global site tag (gtag.js) - Google Analytics