趣味棋子游戏中的数学
朋友,你可玩过游戏么?你可知道身边熟悉的游戏也许都蕴涵着数学知识?今天让我们来领略一下两个有趣棋子游戏中的数学.
一.取棋子游戏
游戏规则:
(1)取一堆棋子,一共13枚;
(2)每次游戏双方轮流从中取走1至5枚棋子;
(3)谁取最后1枚棋子谁输。
如果有人邀请你做这个游戏可要留心了,因为这个看似简单的游戏其实暗藏玄机,不了解的人必输无疑。
那么让我们来分析一下这个游戏
首先采取逆推法,观察当剩下一定数量的棋子,对于取者是有利还是不利。
由游戏规则可得
(1)当只有1枚棋子的时候,显然取者必输;
(2)当有2至6枚棋子时,取者可以对应取走1至5枚棋子从而只剩下1枚给对手,获得胜利
(3)当有7枚棋子的时候,取者无论取走1至5枚中的任何一个数都会使棋子堆中剩下2至6枚棋子,从而对手就可以根据(2)获胜,取者失败
(4)当有8至12枚棋子的时候取者只要对应取走1至5枚棋子即可使棋子堆中剩下7枚棋子由对手来取,从而根据(3)对手必败,取者获胜
(5)当有13枚棋子的时候,无论取者取多少都将进入剩下8至12枚棋子的情况,从而对手将根据(4)获胜,取者失败。
也就是说,这个游戏中后取者一方得胜的几率是100%。
假如你不幸先取,那就没有任何可能胜利。
同时研究以上(1)至(5)的情况,我们会发现,只有当棋子堆中剩下1枚,7枚,13枚时,先取者是会失败的。
这有什么规律呢?经过观察可以发现
1=1+0*6 7=1+1*6 13=1+2*6
由此我们可以将这个游戏中的总棋子数推广到M,设有M个硬币每次游戏双方轮流从中取走1至5枚硬币;谁取最后1枚硬币谁输。
则当M=1+6n 即6除M的余数为1时,后取者必定胜利。
那么为什么是6这个数呢,经过观察,我们可以发现因为6=1+5
是“一个玩家每次可以取的最大枚数”+1
于是这个游戏中的数据可以继续推广,设有M个硬币,每次游戏双方轮流从中取走1至a枚硬币;谁取最后1枚硬币谁输。
当M=1+(1+a)n时后取者必胜
我们可以对该公式进行验证
假设该游戏进行了n个回合后结束
先取者每轮从硬币堆中取走x个硬币(1≤x≤a)
则后取者可以选择取走(1+a-x)个硬币
那么硬币堆每回合都会减少1+a个硬币,第n回合结束后,将只剩下1枚硬币,因为此时由先取者取硬币,先取者就输了。
利用这条公式我们可以构造出许多类似的数据进行游戏如
当有65枚硬币,每次游戏双方轮流从中取走1至7枚硬币则先取者必输
当有82枚硬币,每次游戏双方轮流从中取走1至8枚硬币则先取者必输
当有101枚硬币,每次游戏双方轮流从中取走1至9枚硬币则先取者必输
诸如此类…………
二.翻棋子游戏
游戏规则:
(1)有一个2*2棋盘,棋盘上每个格子上都有一枚棋子
(2)两个人进行该游戏,每回合里轮回行动,其中一人可以决定选择翻转某两枚或者一枚棋子,接着另一人可以选择将棋盘旋转90,180或者270度,或什么都不做。
(3)游戏轮流进行到所有棋子同面向上翻棋者胜
(4)选择翻棋子的人在游戏过程中无法看到棋盘上的棋子
这个游戏看似复杂,让人望而生畏,其实是有迹可寻的,首先我们采取穷举法列出所有初始情况如下(H代表正面,T代表反面)
1和4上下对称,实际属于一种状态。
这样就只有1、2、3三种初始状态了。
目标是,经过数次翻转棋子,使得所有的状态都能达到全上或者全下的情形。
1.任一对角线翻转(这里的翻转指的是上面的每个棋子都翻个个,下同)这一步做完后,便出现如下情形:
状态(1)不变,因为它要么变成对称,要么旋转角度。
状态(2)也不变,只是旋转了一下角度而已。
状态(3)直接变成全上或全下了,OK,属于提前完成任务,丢弃。
2. 任一条边翻转
长话短说,状态(1)依然不变,因为除了变角度就是变成对称。
状态(2)分两种情况。
一种是直接胜利,丢弃。
另一种是变成状态(3)。
3. 任一对角线翻转
状态(1)仍然不变,状态(3)直接走向胜利。
4. 任一个硬币翻转
这一步的目的是让状态(1)变成状态(2)或者状态(3)。
这样,后续的步骤就和前面一样了。
5. 任一对角线翻转
6. 任一条边翻转
7. 任一对角线翻转
这个方法分成两部分,前三步和后三步。
前三步处理棋盘上有偶数颗正面朝上的棋子的情况。
第四步把奇数颗正面朝上的情况转化成偶数颗正面朝上的棋子,然后重复使用前三步的策略即可。
这个方法可以直接推广到的情况:
在给出方法前,先定义棋子状态为0如果正面朝上,为1若正面朝下。
若干个状态的XOR 和指状态的和除以2的余数。
两个棋子对称是指两个棋子处于正多边形棋盘的直径上(此时为偶数)。
假设)(k S 为k n 2 时的策略。
我们来递归构造策略)(k S :
1、如果棋盘上任何对称的棋子方向都相同,则将对角的棋子一个整体(同时操作)之后,枚棋子转化成的情形,调用 即可让所有棋子方向相同。
此策略记为。
2、如果棋盘上任何对称的棋子方向都相同或者同时都相反,类似1先调用
,若棋子方向都相同,则已经解决了问题。
若否,注意到调用1C 的过程只会同时改变对称的两个棋子的朝向,这样调用之后还是满足任何对称的棋子方向都相反,这时候,翻转连续的
个棋子,从而可以转化成1情况。
所以,策略可以解决任何对称的棋子相同或者相反的情况。
其中表示翻转连续的个棋子。
3、接下来主要是把问题转化为2中的情况。
这时候只需要对某连续枚棋子调用即可。
这是因为如果我们把对称的棋子看成一个整体的话,则这次
的每次操作都只作用于任何对称的棋子的其中一枚上。
这样,如果我们考虑对称棋子的XOR 和的话,的过程中会出现所有对称的棋子方向都相同或者都相反的情形,也就是2中的情况。
由于我们不知道这个状态在什么时候出现,所以在这个
的每一步后,都需要执行一次操作。
最后将情况还原到全部棋子朝向统一.
其实还有许多我们熟悉的游戏都蕴涵着数学知识,只要我们善于发现和思考,就可以在游戏中兼获乐趣和知识。