APP下载

数学游戏24点可行性最小值证明及通用算法

2020-01-17

黑龙江科学 2020年23期
关键词:张牌点数括号

徐 品

(南阳农业职业学院,河南 南阳473000)

24点是一个数学益智游戏,传统24点的规则是任意取4个1~10的整数,用加、减、乘、除(可加括号)把这4个数算成24,每个数必须用一次且只能用一次。24点有助于发展学生的逻辑思维,使学生在学习中游戏,在游戏中学习,一题多解还可以加强学生举一反三的能力。24点有其独特的数学魅力和丰富的内涵,简单易学,通常用扑克牌上的数字来进行计算。扑克数学游戏的特点是教育功能性较强、趣味性强、易操作,游戏要素是参与者、工具、主题和规则。 经过实践发现,24点游戏有助于提高学生的专注力和心算能力。

1 游戏推广及意义

在传统24点的游戏规则下,有解率为87.47%,也就是平均每抽八组数字就有一组算不出24点。游戏中只有固定几个较难的题目,例如:①1,3,4,6。②1,4,5,6。③1,5,5,5。④1,6,6,8。⑤3,3,7,7。⑥3,3,8,8。⑦4,4,7,7,有时需要用到分数去解题。24点小游戏更多考验的是心算的快、精、灵、全,比较锻炼思维能力,但游戏时常会随着无解组合的出现而结束。对此,本研究尝试设计出一种新的游戏规则:一副扑克牌中抽去大小王剩下52张,J,Q,K,A均代表1点,可随意抽取9张牌,利用加、减、乘、除(可加括号)把牌面上的点数算成24。

2 主要结果及其证明

主要定理:任意在1~10中(包含1、10)的9个数在用且仅能用一次的规则下均可通过加减乘除(可加括号)得到24。为证明这个定理,提出了以下引理:对于满足2≤x1≤8,4≤x2≤10 的1,1,1,x1,x2,这5个数可通过四则运算得到24。

证明过程分四步:

(1)2≤x1≤6,4≤x2≤9。一方面,2个1和x1可得到3和4,5≤x2≤9和1可得到6或8,故5≤x2≤9可以得到24;另一方面,3个1可以和x1得到6,故1,1,1,4,x1可以得到24。

(2)x1=7,4≤x2≤9。1和x1可得到6,两个1和4≤x2≤6可得到4,再通过如下计算可得(2)成立:

(7×7-1)/(1+1)=24

(1+1)×(7+1)+8=24

(1+1)×9+7-1=24

(3)x1=8,4≤x2≤9。由于3个1和4≤x2≤9可得到3,故(3)成立。

(4)2≤x1≤8,x2=10。通过如下计算可知(4)成立:

(1+1+10)×1×2=24

(3-1+10)×(1+1)=24

(1+1)×10+4×1=24

(1+1)×10+5-1=24

(1+1)×(1+6)+10=24

(1+1)×7+10×1=24

(1+1)×(8-1)+10=24

主要定理的证明:对于9个1~10的整数,设其为x1≤x2≤…≤x9,现得出以下结论:

结论一:几乎都可得到3个1(只有一种例外情形)。现设计出以下算法A:(i)检查1点数量,若1点数量大于等于3,则取出3个1,结束。(ii)若有相同的点数,将点数相除得到新点数1,返回(i)。若没有相同的点数,取相邻最近的两个点数的差得到新点数1,返回(i)。由抽屉原理可知,若点数为2~10的数量大于等于6,则存在相邻的牌点数小于等于1,那么以上算法中只有1,1,2,4,6,8,10这一组数不能得到3个1,但却有1+1+2-4+6+8+10=24。

结论二:可以得到1,1,1,y1,y2,y3。对于其他情况,先挑出3个1,然后用算法B可以得到3个1和y1,y2,y3。算法B如下:(i)若只有3个点数,结束。(ii)若最大数与最小数之和小于等于10,则将二者相加,返回(i)。 若最大数与最小数之和大于10,则取大数减小数(差为0时相除),返回(i)。

结论三:1,1,1,y1,y2,y3可以计算出24。由算法A可知,挑出3个1后最少还剩3张牌,再由算法B可知,每经过一次循环,点数的数量或牌数就会减少1,故通过算法B最终得到1,1,1,y1,y2,y3。可以设y1≤y2≤y3,若y1+y3≤8,则有y1+y3≥2.根据引理可知1,1,1,x1+x3,x2可得到24。若y1+y3≥9,分为两种情形:①|y3-y1|≥2,由引理可知1,1,1,x3-x1,x2可得到24。②|y3-y1|≤1,则x3≥5. 若y1,y2,y3中有一个在{6,7,8,9}中,则将另两个数相减或相除可得到1,从而可由以下计算得到24,6和4个1可得24,7、8、9和1可得8,再和3个1可得24。

6×(1+1+1+1)=24

(1+1+1)×(7+1)=24

(1+1+1)×(8×1)=24

(1+1+1)×(9-1)=24

剩下只需计算y1=y2=y3=5和y1=y2=y3=10。这两种情况可由以下计算得出结论:

(5-1)×5+5-1×1=24

(10+1+1)×(10/10+1)=24

由上可知,任意点数为1~10的9张牌可通过加减乘除(可加括号)得到24。

推论:在点数为1~10的一堆牌中,任取多于9张牌均可通过加减乘除(可加括号)得到24。

证明:由算法A和算法B可以得到1,1,1,x1,x2,x3。算法A只有例外情况会形成1,1,2,4,6,8,10,算法B的例外情况是得到4个1和两个大于1的数,从对两种例外情况的讨论和定理的证明过程来看,该推论显然成立。

上述推论说明,任意拿到超过9个1~10的整数通过加减乘除(可加括号)都能得到24,即拿到任意一堆牌,只要牌的张数大于等于9,则肯定可以通过加减乘除(可加括号)得到24。

3 通用算法

受主要定理证明过程的启发,得到了超过9个数算24的一般算法,算法详情如下:

第一步(步骤①②):得到3个1,例外情况会形成1,1,2,4,6,8,10,若是例外情况,则有1+1+2-4+6+8+10=24。①检查1点数量,若1点数量大于等于3,则取出3个1,结束。②若有相同的点数,将点数相除得到新点数1,返回①。若没有相同的点数,取相邻最近的两个点数的差得到新点数1,返回①。

第二步(步骤③④):3个1之外得到3个数,例外情况是得到4个1和两个大于1的数,可以通过4×6=24,3×8=24,(1+1)×(9-1-1)+10=24,1+1+1+1+10+10=24得到结果。③拿出3个1,若只剩3个数,结束。④若最大数与最小数之和小于等于10,则将二者相加,返回③。若最大数与最小数之和大于10,则取大数减小数(差为0时相除),返回③。

第三步(步骤⑤):3个1和另外3个数算24。⑤给定1,1,1,x1,x2,x3,容易计算24点,算法结束。

第一步的例外情形是因为算法A在出现1,1,2,4,6,8,10这7个数时不能再生成3个1,而其他情形均可得到3个1。第二步的例外情形是得到1,1,1,x1,x2,x3,x4后(可设这几个数按递增顺序排列),若x1+x4>10且x4-x1≤1,就会得到1,1,1,1,x2,x3。

利用1,1,1,x1,x2,x3计算24点的详细方法为设x1≤x2≤x3,若x1+x3≤8,则有x1+x3≥2。根据引理可知1,1,1,x1+x3,x2可得到24。若x1+x3≥9,分两种情形:①|x3-x1|≥2,由引理可知1,1,1,x3-x1,x2可得到24。②|x3-x1|≤1,则x3≥5。若x1,x2,x3中有一个在{6,7,8,9}中,则将另两个数相减或相除可得到1,从而可由以下计算得到24,6和4个1可得24,7、8、9和1可得8,再和3个1可得24。

6×(1+1+1+1)=24

(1+1+1)×(7+1)=24

(1+1+1)×(8×1)=24

(1+1+1)×(9-1)=24

剩下只需计算x1=x2=x3=5和x1=x2=x3=10。这两种情况可由以下计算得出结论:

(5-1)×5+5-1×1=24

(10+1+1)×(10/10+1)=24

猜你喜欢

张牌点数括号
我曾丢失过半个括号
扑克牌
“入”与“人”
选出括号内正确的字
画点数
多核并行的大点数FFT、IFFT设计
扑克牌的预言
巧猜骰子
移牌
主谓一致对比练习