今天心血来潮,想搞点有意思的东西,于是就盯上“数学24点游戏”这个经典玩意儿。这游戏小时候可没少玩,规则简单得很,就是给你4个数字,让你用加减乘除还有括号把它们凑成24,每个数字都得用上,而且只能用一次。
小时候玩这游戏,那都是靠脑子硬算,有时候能憋半天想出一个解法,别提多有成就感。现在不一样,咱是会写代码的人!就想着能不能用代码把这玩意儿给实现出来,以后再遇到算不出的题目,直接丢给程序跑一下,岂不美哉?
说干就干,我先在纸上划拉划拉,把思路给捋捋。这游戏的核心就是穷举,把所有可能的计算组合都试一遍,看看哪个结果是24就行。但直接这么硬来肯定不行,计算量太大。我得想个法子,把这过程给优化一下。
我琢磨着,这4个数字的运算顺序是有讲究的。比如 1 + 2 + 3 + 4 和 4 + 3 + 2 + 1,虽然用的数字和运算符都一样,但这俩的计算顺序不一样,在程序里就得算成两种不同的情况。我得先把这4个数字的所有排列组合都给列出来。
搞定数字的排列,接下来就是运算符的事儿。加减乘除4种运算符,每个位置都能放,这又是一堆的组合。我寻思着,这也不能瞎试,得有个规律。于是我又在纸上写写画画,把运算符的组合也给列个表。
数字和运算符的排列组合都搞定,接下来就是把它们“组装”起来。我开始写代码,用的是Python,这玩意儿我用得顺手。我写个函数,专门用来生成所有可能的计算表达式。这函数写得我头昏脑涨,感觉脑细胞都快烧光。不过看着屏幕上不断蹦出来的表达式,心里还是挺有成就感的。
小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
表达式有,接下来就是计算。我又写个函数,用来计算这些表达式的结果。这里头有个坑,就是除法。除法得考虑除数为0的情况,不然程序跑着跑着就得报错。我加个判断,遇到除数为0的情况就直接跳过,保证程序能顺畅地跑下去。
我把这些函数都给串起来,写个主程序。这主程序干的事儿很简单,就是读取用户输入的4个数字,然后调用前面写的那些函数,生成所有可能的表达式,计算结果,找出结果是24的表达式,把这些表达式打印出来。
程序写完,我迫不及待地试一下。输入4个数字,回车一敲,屏幕上“唰唰唰”地蹦出一堆表达式,看得我眼花缭乱。我仔细瞅瞅,还真有结果是24的!那一刻,我感觉自己就像个数学大师,攻克一道世界难题!
这程序还有不少可以改进的地方。比如,现在这程序只是把结果是24的表达式给打印出来,但这些表达式里头可能有重复的,或者只是运算顺序不一样但本质上是同一个的。我得想个法子,把这些重复的表达式给去掉。再比如,现在这程序只能算4个数字的24点,要是能算更多数字的,那就更牛!
不过今天就先到这儿。能把这程序给捣鼓出来,我已经心满意足。以后再遇到算24点的难题,咱就不怕,直接掏出我的“秘密武器”,让它来帮我搞定!
今天的实践记录就分享到这里。