EXCEL求解24点游戏

24点算术游戏以它独具的数学魅力和丰富的内涵被越来越多的人们所喜爱 。这种游戏方式简单易学,能健脑益智,是一项极为有益的活动 。两位数内加、减、乘、除四则混合运算是小学生必须具备的数学技能,通过24点算术游戏训练可以提高小学生运算水平,为将来数学学习打好基础 。“巧算24点”能极大限度地调动多种感官的协调活动,对于培养我们快捷的心算能力和反应能力很有帮助 。
一、24点游戏介绍

规则

任意选取4个1~13的正整数,要求四个数字四则运算结果等于24 。
这个游戏常用扑克牌来开展,拿一副牌,抽去大小王后,剩下1~13这52张牌(A=1、J=11、Q=12、K=13) 。任意抽取4张牌(称为牌组),用加、减、乘、除(可加括号)把牌面上的数算成24 。每张牌必须用且只能用一次 。如抽出的牌是3、8、8、9,那么算式为(9-8)×8×3=24 。

算法

在有解的牌组中,把牌面上的四个数想办法凑成2和12、3和8、4和6,再相乘求解 。用得最为广泛的是以下六种组合解法:(我们用a、b、c、d表示牌面上的四个数) 。经计算机模拟计算,随机的4个1-13的整数(数字可重复)中,能够算得24的概率约为74.835% 。
(a-b)×(c d),如(10-4)×(2 2)=24;
(a b)÷c×d , 如(10 2)÷2×4=24;
(a-b÷c)×d,如(3-2÷2)×12=24;
(a b-c)×d,如(9 5-2)×2=24;
a×b c-d,如11×3 l-10=24;
(a-b)×c d , 如(4-l)×6 6=24;

典型案例

3
3
3
3
4
4
4
4
5
5
5
5
6
6
6
6
12
12
12
12
【EXCEL求解24点游戏】1
5
5
5
1
3
4
6
1
4
5
6
3
8
8
10
3
3
7
7
3
3
8
8
二、算法设计思路
  • 算符:加【 】、减【-】、乘【*】、除【/】和括弧【()】
  • 数字:任意选取4个1~13可重复的整数
  • 规则:将4个整数用3个算符或括弧链接起来构成运算结果为24的算式,或判断出无解(所选4个整数等于24的算式不存在)
:现有4个整数3、3、8和8 , 能否按规则列出算式,计算结果为24.
:8/(3-8/3) = 8/(9/3-8/3) = 8/(1/3) = 8*3 = 24 。
那么,怎么样用电脑解决24点问题呢?
枚举法或者称为穷举法,就是在所有按规则构成的算式中去筛选 。
如果按规则构成的算式数量是有限的,理论上就可以用编程方法找出答案 。
在24点算法中,算符和数字按规则构成的算式有10752个,其中有大量的冗余算式 。
例如,1 2 3 4、2 1 3 4、(1 2) 4 3计算结果相同,只要其中最简单的(1 2 3 4)即可,其它都是冗余算式 。
编程过程中 , 如果需要去除冗余算式,需要在循环过程中通过许多条件判断语句来完成 。这样往往会增加编程难度和降低运算速度 。如果面对的算式集合不是特别大,可考虑直接全部列出所有算式,再从中赛选计算结果为24的算式即可 。
合理构造24点算式需要点排列、组合知识 , 计算采用C、VBA、Python、R、Javacript等编程语言解决24点问题也不是一件容易事 。
EXCEL(不是EXCEL VBA)能办到么?
和C等编程语言相比 , 有的问题用EXCEL解决效率会更高,COUNTIFS函数对于编程语言来说需要多行代码来实现循环和多重条件判断;但解决24点之类的问题则没有编程语言那么强大、灵活 。只要运用得当,大多数算法问题都可以用EXCEL解决,差别只是效率问题 。
三、EXCEL算法设计
1、算符排列问题
加【 】、减【-】、乘【*】、除【/】4个算符在每个算式中出现3次(可重复),它们将4个整数连接起来 。由于可以重复使用,这是一个排列问题,排列数=4×4×4=64 。排列集合为:


相关经验推荐