圣诞是玩毛毛球的好时光!去年圣诞,我曾发布了一期毛毛球解谜模式全通关的视频(BV1SL4y1J7ey)。在那期视频里,我演示了毛毛球解谜模式所有关卡的通关过程,但是没有对解题思路作任何解说,只是在视频的简介里预告了将在之后用一篇文章来详细说明。时隔一年,这篇文章现在终于可以和大家见面了!事实上,我原本是打算在那期视频发布后的一个月之内就要写完这篇文章的,但是那期视频下方好友樱花Judy的评论给了我一些新想法。
樱花Judy是一位魔方高手,他留言中提到的ABA'B'的三循环应该是魔方复原中的一种常用技巧,而其理论基础则是来源于一门优美的数学分支:群论。尽管我对魔方的了解并没有那么深入(在发布那期视频前仅仅只会按照小时候在一个叫魔方小站的网站上学的固定步骤复原魔方),但是作为一名数学系的学生,我对群论还是不陌生的。联想到之前我也曾在网上看到过介绍魔方与群论的关系的文章,那么,我是否也可以从群论的角度来研究一下毛毛球的解谜模式呢?确定了这个新计划之后,我便打算再深入学习和探究一下相关知识,然后再考虑文章的撰写,结果后来因为种种原因,这件事被我一拖再拖。不过,说好的约定还是要实现的,一直拖下去只会越来越累,因此,在一年后的今天,我终于下定决心要将这篇文章完成,送给大家作为圣诞礼物!
补记:然而非常无奈的是,我于前几天(12月21日左右)不幸感染新冠,有两天左右的时间感到全身乏力,至今也尚未完全恢复,因此,这篇文章还是没能如期完成。现在我打算将这篇文章分两部分发布,将涉及群论的部分放在后半部分(由于后半部分会出现一些公式,而乐乎的文章似乎没有公式编辑功能,因此后半部分可能只会在B站发布,大家可以关注我的B站ID:蓝天白云XYZ)。后半部分预计于2022年12月31日发布。望大家理解,也祝愿大家身体健康!
在开始正题之前,先简单聊聊毛毛球这款游戏的基本玩法以及我的个人游戏经历吧。毛毛球是宝开公司开发的一款非常经典的三消游戏。游戏的玩法简洁易懂,画面里的那些毛毛球也十分惹人喜爱。如果大家没有听说过这款游戏,那么我相信大家至少也一定听说过同为宝开公司开发的三消游戏的经典之作——宝石迷阵!事实上,这两款游戏的玩法有着许多相似点与不同点,下面就来分别说明一下。
两款游戏的相似之处在于游戏的界面。两款游戏都是在由不同颜色的物体组成的正方形棋盘上进行的。宝石迷阵(以宝石迷阵3为例)的棋盘为8*8大小,由各色宝石组成;毛毛球的棋盘为6*6大小,由各色毛毛球组成。
两款游戏的不同之处在于棋盘的移动和消除机制。宝石迷阵中,我们每一次操作可以交换两个相邻的宝石,若交换后可以使3个同种颜色的宝石连在一起(必须在一直线上),则操作有效,这3个宝石被消除,同时棋盘会下落补足因消除而产生的空档,反之则操作无效,操作会被还原;毛毛球中,我们每一次操作可以拖动一整行或一整列的毛毛球至任意位置(棋盘边界是循环的,也就是说,从右侧拖出屏幕的毛毛球会从左侧再出现,从下侧拖出屏幕的毛毛球会从上侧再出现),若拖动后可以使3个同种颜色的毛毛球挨在一起(无须在一直线上),则操作有效,这3个毛毛球被消除,同时棋盘会下落补足因消除而产生的空档,反之则操作无效,操作会被还原。此外,毛毛球游戏中可能还会出现占2*2空间的大毛毛球,在拖动大毛毛球所在的行或列时,大毛毛球所在的两行或两列会被同时拖动,且大毛毛球不能跨越棋盘边界。棋盘里最多只能有1个大毛毛球。
上图:在宝石迷阵3的棋盘中通过交换两个宝石来构成有效消除。
上图:在毛毛球的棋盘中通过拖动一整行或一整列的毛毛球来构成有效消除。
上图:大毛毛球无法跨越边界,且大毛毛球所在的两行或两列会被同时拖动。
当然,上面说的都是这两款游戏的经典模式的基础玩法,这两款游戏本身都还有不少附加的机制或游戏模式,不过其实它们都与我们今天主要要说的毛毛球解谜模式的玩法关联不大,因此这里也就不深入介绍了。但不可否认的是,这两款游戏的基本玩法确实都很经典,后来也有许多游戏对这两款游戏进行了模仿。所以,如果大家对三消游戏感兴趣的话,一定不要错过这两款三消游戏的“鼻祖”!顺便一提,或许是由于毛毛球很像圣诞节的彩球吧,毛毛球这款游戏似乎还有一个所谓的圣诞版本(应该只是换了一下素材,没有实质内容的改动),这也就是我说“圣诞是玩毛毛球的好时光”的原因所在了!好友八月十六星期五曾录制过这个版本的试玩视频,感兴趣的朋友也可以去看一下(BV1Pa4y1p7MJ)。
说回我们的主题,毛毛球解谜模式的玩法究竟是什么呢?在解谜模式中,毛毛球不会被消除,我们也可以对棋盘进行多步的操作(经典模式中每步的操作都必须至少完成一次消除,否则操作无效)。解谜模式的每关中,游戏都会给我们一个目标棋盘,我们的目标是:通过若干步的操作,将每关的初始棋盘移动成目标棋盘的样式。和把魔方打乱再还原类似,我们也可以把初始棋盘理解成由目标棋盘打乱而来,那么解谜模式每关的过关过程就可以理解成是一个还原棋盘的过程。解谜模式共有20大关,每个大关有5小关,因此总共有100关。每一大关必须通过任意3个小关后才可解锁下一大关。前期的关卡非常简单,要么就是过关仅需寥寥几步,要么就是棋盘中所含毛毛球的颜色数量很少,目标棋盘的排列也很规整,因此光靠直觉就可以还原,但是大概从第6大关开始,难度有所增大,越往后,初始棋盘和目标棋盘的混乱程度就越高,光靠直觉就几乎行不通了,我想大部分初次尝试解谜模式的玩家也差不多会止步于第6大关附近。
上图:关卡1-3,非常简单,甚至只需一步即可还原。
上图:关卡6-2,包含4种颜色,还有大毛毛球,尽管目标棋盘是漂亮的中心对称图形,但是实际上并不好还原。
下面来说说我玩这款游戏的经历吧!我大约是在2010年的新年家庭聚会上首次接触到这款游戏的。当时比我大一岁的堂姐正在玩这款游戏(看得出来,她似乎很喜欢这款游戏),我也就凑热闹和她一起玩了一会。说实话,在我童年玩过的众多游戏里,这款游戏算不上让我感到好玩,但是在那时我还是记住了这款游戏的两个特征,一是那些毛毛球的样子,二是“根本不可能通关的”解谜模式(这对当时的我们来说确实太难了)。后来的很长一段时间,我都几乎没有再玩过这款游戏,但是我还是时不时地会想起这款游戏的解谜模式,并对其感到无比敬畏。直到去年(2021年)冬天,我终于决定再次尝试一下这款游戏,看看能否在解谜模式中有所突破。或许是这十几年的积淀让我成功“脱胎换骨”,经过一段时间的思考,我竟成功找到了过关的“通法”,一鼓作气将解谜模式的100关全部通过,将4个与解谜模式有关的奖杯(类似于成就)全部收入囊中!随后,我还惊喜地发现解谜模式竟然还有通关动画,这也是我十几年来未曾想象到的!看着动画里各色的毛毛球不断地旋转舞蹈,我感到说不出的喜悦和自豪。因此,我也就有了录制视频和发布文章向大家分享的想法。
上图:解谜模式的四个奖杯,分别要求:到达第10大关、通过前10大关的所有小关、到达第20大关,以及通过所有关卡。
上图:只有最聪明的毛毛球才能看到的通关动画!
上图:通关动画中毛毛球们的舞蹈。
事实上,我玩大部分童年经典游戏的经历都大致可以分为两个阶段。第一阶段可以称为“懵懂阶段”(说得不好听一点,就是“瞎玩阶段”),主要发生在我读小学期间。那时我通过家庭聚会时和同龄孩子一起玩,或是父亲的《电脑迷》光盘里的游戏部分等途径初次接触到了这些游戏,但是由于当时年纪尚小,没有足够的思考能力,因此大多游戏都玩到一半就玩不下去放弃了。第二阶段可以称为“开悟阶段”,这一阶段差不多从我2011年在爱拍原创网站上发视频开始。一方面,在上网分享自己游戏经历的过程中,有很多网友和我进行了互动,我也时常会观看其他网友的视频,这些交流和学习的过程弥补了我曾经许多对游戏认识不全面的地方(这里要特别感谢好友小古比鱼,这些年来在宝开游戏方面和我交流最多,令我收获最大的应该就是小古比鱼了);另一方面,随着我在学校不断学习,我的思维能力逐渐得到提升,因此我也逐渐能形成一套自己的思路来玩游戏,换句话说,就是我对待游戏更加认真了,而不像小时候那样不经思考只为图乐。渐渐地,我拾起了一个又一个幼时未能琢磨透的游戏,细细品味每一款游戏的深度玩法和深层内涵,这一过程令我感到无比享受,因此也一直持续至今。
说了这么多,是时候进入正题了。在下一节中,我将首先介绍我在去年的视频中使用的过关通法,这一节(实际上也就是这篇文章的原定内容)应该会比较通俗易懂,不会涉及任何数学名词,大家可以放心阅读。当然,也非常推荐大家在阅读前先自行尝试,这样应该可以取得更多收获。在第四节,我将借助一些群论的概念,对毛毛球解谜模式中蕴含的数学原理做更深入的分析和讨论,也非常推荐感兴趣的朋友阅读。鉴于个人能力有限,文章中若出现叙述或推理不严谨之处,望大家不吝指教,谢谢大家!如果大家都准备好了,那我们就开始吧!
对于一个毛毛球解谜模式的关卡,大家会尝试用什么方法来还原目标棋盘呢?我想,大家一定会想过按照毛毛球的颜色一种一种还原,我们不妨称之为“色先法”,这在游戏前期确实是个不错的办法。前期大多数关卡只有两色或三色,对于两色的关卡,只要还原了一种颜色的毛毛球,另外一种也就自动还原了,对于三色的关卡,其颜色分布也往往很有规律性(比如每种颜色各占两行),因此也不难还原。但是,差不多从第6大关开始,棋盘的混乱程度变高,色先法就遇到了显著困难。事实上,色先法没能抓到问题的本质,由于不同关卡的棋盘颜色分布都不同,因此虽然都是同样的思路,但实际上每过一关都要换一种执行方法,这显然不能成为长久之计。那么,问题的本质是什么呢?我们注意到尽管每关棋盘中毛毛球的颜色分布都不同,但是,每关的棋盘大小和棋盘的移动机制都相同,也就是说,从某种意义上讲,每关的“结构”是相同的。因此,我们应该从结构入手,去寻找过关的通法。
我想,大家在操作过程中最担心的或许是,在还原了一部分毛毛球之后,还原其余部分时很可能会把已还原的部分又打乱了。这一问题在色先法中常常会遇到,但是,如果从结构入手,这一问题就可避免。那么具体应该怎么做呢?譬如说,我们可以先还原棋盘左上角的1*1部分(由于大毛毛球的存在会让讨论变麻烦,所以在本文的讨论过程中,如果没有特别说明,均假设棋盘中没有大毛毛球),这当然很简单,因为只需要还原1个毛毛球。之后,我们保持这1个毛毛球所在的行和列不动(在经典模式中,存在给毛毛球“上锁”的机制,被锁住的毛毛球所在的行和列无法移动,这里我们也可以假想成将这个毛毛球“锁住”),然后还原左上角的2*2部分(可以先还原1*2,再还原2*2),这也不难,因为虽然有一行一列不能动,但是也还有五行五列可以自由移动呢。之后,我们再保持已还原的2*2不动(锁住),在此基础上还原左上角的3*3部分(可以先还原2*3,再还原3*3),以此类推,直到还原部分达到5*5。如果我们将可以自由移动的行或列称为“自由边”,那么我们可以发现,尽管随着还原的部分越来越多,自由边越来越少,但是在这个过程中,我们始终都能保证至少有一行和一列是自由边,这已经足够保证我们移动的自由度,不会像色先法那样可能出现所有的行和列都被“锁住”而无法移动的情况。最后,当已经还原到5*5时,我们还剩一行和一列是自由边,我们称这一行一列为“最终行列”。通过移动最终行列,我们可以把棋盘还原到5*6,也即仅剩一行或一列没有还原,我们称这一行或一列为“最终边”。由于这时,我们只剩最终边是自由的,在一般情况下,仅靠移动这一行或一列,我们是无法保证能够将其还原的。因此,最终边的还原需要一些特殊的技巧,我们这里暂时先不讨论。至少,通过这一方法,不论棋盘的颜色有多杂乱,我们都可以机械地还原棋盘5*6的部分,这已经很接近成功了。由于这种方法是从角落入手,逐渐扩张还原面积,我们不妨将这种方法称为“角先法”。角先法的还原步骤如下:
上图:角先法的还原步骤(第2至5步都可以细分为两步)。
当然,还有许多其他类似的方法,例如“层先法”、“内先法”等,这些方法都能够还原棋盘的5*6,剩下一条最终边需要特殊的处理方式。层先法和内先法的还原步骤如下:
上图:层先法的还原步骤。
上图:内先法的还原步骤(第1步和第2步都可以进一步细分)。
需要注意,在还原到5*6之前,我们始终都要保持至少有一行一列是自由边。因此,如果你想自创一种“外先法”,即先还原棋盘6*6的外围,再还原中间4*4的外围,最后还原中心的2*2,可行性就比较低,因为还原棋盘6*6的外围之后,你就已经没有任何自由边了;另外,棋盘中只有行或者只有列是自由边也不行,譬如如果你想先还原第一行的6个毛毛球,再还原第二行的6个毛毛球,以此类推,这也不太行,因为在还原第一行的6个毛毛球之后,你的所有列就都不是自由边了,仅靠行的移动,我们无法还原剩下的行。因此,可以看到在层先法中,我们每次只还原一行的5个而非6个毛毛球,其目的就在于留出一列作为自由边。
角先法、层先法和内先法这三种方法本质上没有什么优劣之分,但是在某些特定的关卡中,可能用某种方法会更顺手(譬如内先法或许就比较适合中心是大毛毛球的关卡),甚至在某些关卡中,色先法也可一试。因此,大家在学会这些方法后可以灵活使用,不必死记一种方法。当然,上面对角先法、层先法和内先法的描述还是比较笼统,我们下面选择其中的层先法作为代表来详细阐述一下执行过程。至于另外两种方法,在掌握了层先法的基础上,很容易就可以变通过去。层先法的操作过程比较直接易懂,因此层先法是我最早发现的方法,也是我在视频中最常使用的方法。
层先法的操作过程比较有意思,像是一个运输物品的过程。在层先法中,我们需要先选定一行或一列作为“运输边”,运输边之外的5*6部分的还原都需要靠运输边来完成。为了方便起见,我们这里不妨就取棋盘左数第一列作为我们的运输边。我们首先需要还原目标棋盘第一行的右边5个毛毛球,我们将其从左到右依次命名为1号、2号、3号、4号和5号。这里,有必要需要强调一个很重要的观念,那就是我们无需还原原毛毛球的绝对位置,而只需还原其相对位置即可(因为棋盘的边界是连通的,即边界是循环边界)。具体来说,就是我们无需将5号毛毛球先还原到位,再将4号毛毛球还原到位,以此类推,而只需先将5号毛毛球放到第一行,再把4号毛毛球放到5号毛毛球的左边相邻位置,再把3号毛毛球放到4号毛毛球的左边相邻位置,以此类推,最后整体移动第一行,即可将5个毛毛球全部归位。有了这样的思路,具体实现也就不难了。首先,我们在棋盘上所有未还原的毛毛球中找到与5号毛毛球颜色相同的一个毛毛球。这一定可以找到,而且可能不止一个,只需任取一个即可。随后,我们将这个毛毛球挪至第一列(运输边),然后再通过第一列将其挪到第一行即可。一个具体的例子如下:
根据之前的定义,这里5号毛毛球是黄色的毛毛球,那么我们就可以在棋盘中随便找一个黄色的毛毛球,比如说第二行的这个,然后移动第二行把它挪到第一列,再移动第一列把它挪到第一行即可。
接下来我们需要将4号毛毛球放到5号毛毛球的左边。首先我们依然是观察棋盘,在所有未还原的毛毛球中找到与4号毛毛球颜色相同的一个毛毛球。注意我们当然也可以在第一行中找,只要4号毛毛球没有在第一行的正确位置(5号毛毛球的左边)的话。找到以后,我们同样将这个毛毛球移动到第一列(运输边),然后,我们移动第一行(如果这个毛毛球就是在第一行中找的话,需要再加一个“回避”的步骤,见之后的例子),将5号毛毛球放在第一行第二列的位置(准备接应4号毛毛球),然后我们移动第一列,将4号毛毛球移动到第一行,这时,4号毛毛球就在5号毛毛球的左边相邻位置,我们的目标就实现了,这一过程的一个例子如下:
接上一个例子,我们已经把5号毛毛球(黄色毛毛球)放到了第一行。4号毛毛球是绿色的毛毛球,我们不妨取第三行的这个。然后,我们移动第三行把这个绿色的毛毛球移到第一列,再移动第一行把5号黄色毛毛球移到第二列的位置(这两步事实上也可以交换),最后移动第一列把绿色毛毛球移动到第一行即可。最终的结果应该是这样:
接下来,3号、2号、1号毛毛球的到位过程都与4号毛毛球的到位过程类似,这样,我们就能够将第一行(的右侧5个毛毛球)还原,而还原第二至第六行的过程又与还原第一行的过程类似,因此这里都不再赘述了,不过,还是再举一个具体例子吧。
如图,我们现在已经还原了第一至五行(每行的右侧5个毛毛球),第六行也已经将2号至5号毛毛球的顺序排列到位,只剩1号毛毛球没有到位。不过,现在1号毛毛球恰好也在第六行,这种情况我们应该怎么办呢?首先,我们还是把1号毛毛球移到第一列,如下:
现在,为了让2号至5号毛毛球能够接应1号毛毛球,我们应该将2号毛毛球移至第二列(即第六行向左移动一格),但是我们不能直接这样做,因为这样一做,1号毛毛球又被从第一列移开了。因此,在此之前,我们需要移动第一列,将1号毛毛球移出第六行,这也就是我之前提到的回避步骤。
现在,局势就很清晰了。我们现在可以将第六行向左移动一格来接应1号毛毛球,然后移动第一列把1号毛毛球移回第六行,这样,这5个毛毛球的顺序就排列正确了,最后我们将第六行向右移动一格,棋盘的5*6就还原成功了!
再次强调,由于棋盘的边界是循环的,而且棋盘中行和列的地位也显然是相同的,因此任意行或任意列都可以取成运输边,还原5*6的方法也类似。此时的5*6可能是跨边界的,如下图:
上图:这里取了第二行作为运输边,还原了棋盘的其余部分(除第二行之外的其余行)。由于循环边界,第一行和第六行实际上是紧挨着的,因此我们也可以说还原了5*6。
现在,借助强大的“运输边”,我们已经可以还原棋盘的5*6,那么最后的这条最终边,也即运输边该怎么还原呢?首先,一种最为简单的方法是,如果棋盘中的毛毛球有一行或一列是同色的或包含5个同色的毛毛球和1个异色的毛毛球,那么我们就取这一行或这一列为我们的运输边,我们称这样的运输边为“优运输边”。为什么要称它“优”呢,这是因为在选择了这样的边为运输边后,若我们成功还原了5*6,那么这条运输边也就自动还原了(在还原了5*6的情况下,剩下的毛毛球不可能在其他地方,只能在运输边上,如果运输边上的毛毛球是同色的或者5个同色1个异色的话,前者当然已经还原了,后者最多只要再移动一步也能够还原)。在上面图片展示的关卡中(关卡17-1),观察目标棋盘可以发现,第二列或第五列都可以充当优运输边。
利用优运输边来还原当然非常方便,相当于直接跳过了还原最终边的过程。但是,并不是所有关都存在现成的优运输边,那遇到这种关卡我们该怎么办呢?或许,我们可以尝试自行构造优运输边。我们可以观察一下目标棋盘,如果其通过一系列假想的操作可以变成含有优运输边的棋盘,那么我们就可以将初始棋盘移动成该棋盘的样子,然后再将假想的操作倒着做回去就行了。下面是一个例子:
可以看到,在这关的目标棋盘中,每行每列都有一个黄色毛毛球。如果我们假想把目标棋盘中每行的黄色毛毛球都移到第一列,称移动后的棋盘为伪目标棋盘,那么第一列就会成为还原伪目标棋盘的一条优运输边。因此,我们可以先把初始棋盘还原成伪目标棋盘,之后我们再把伪目标棋盘还原成目标棋盘就行了,即把每行的黄色毛毛球归位。
上图:伪目标棋盘的样子
然而,并不是所有关卡都能轻松构造出优运输边,因此,我们还是有必要寻找一种手动还原最终边的方法。注意到最终边上的毛毛球的颜色肯定是和目标棋盘上的毛毛球的颜色一一对应的,只是毛毛球的排列顺序可能与目标棋盘不同,因此,若我们能够通过某种方式实现最终边上的两个毛毛球的对换操作,那么通过一系列的对换,我们就能够把最终边上的毛毛球的顺序调整正确。那么,要如何实现这种对换呢?下面,我就来介绍一种方法,我称其为“移花接木法”。
要使用移花接木法,我们首先需要保证选取的运输边(最终边)中包含的毛毛球的颜色与剩余棋盘中的毛毛球的颜色至少有一种是相同的(事实上,只要目标棋盘中存在两个同色的毛毛球就可以保证能做到这一点,因为这两个毛毛球要么在不同行,要么在不同列,我们选择只包含这两个毛毛球之一的行或列作为运输边即可。而毛毛球棋盘大小为6*6=36,总的颜色种类只有8种,因此棋盘中肯定会存在同色的毛毛球)。不妨设这条运输边是第一列,相同的颜色为红色,也就是说,在还原了5*6后,未还原的第一列中至少包含一个红色(若有多个则任取其一),称其为“红一”,5*6的部分中也包含红色(若有多个则任取其一),称其为“红二”。现在,我们就要开始“移花接木”了!首先,我们让红一和红二处于不同行,然后,我们将红二移动到第一列(这会暂时破坏已还原的5*6),再移动第一列,将红一移到红二的位置,最后再移动红一所在行,将其移到红二最初的位置(这又将5*6的部分还原了)。仔细想想,通过这些操作,我们做到了什么?首先,我们并没有破坏5*6的部分,只是将其中的红二换成了红一,但是不管它是红一还是红二,它都是红色,因此对已还原的5*6部分不构成影响。其次,红二跑到了第一列,但是其并不在原先红一的位置(回想一开始红一和红二处于不同行),而是顶掉了第一列中的一个毛毛球,之后,当红一移到原先5*6部分的红二的位置时,这个被顶掉的毛毛球到了原先红一的位置。由于第一列的其他毛毛球也都没有受到影响,因此,我们实际上就完成了第一列中红色的毛毛球和某个毛毛球的对换!基于此,我们理论上可以进一步实现第一列中任意两个毛毛球的对换,因为如果将毛毛球A和红色毛毛球对换,再将毛毛球B和红色毛毛球对换,最后再将毛毛球A和红色毛毛球对换,这样就完成了毛毛球A和毛毛球B的对换(但是实际上往往存在多种现成的可以对换的毛毛球颜色,因此一般不用这么麻烦)。而能够对换任意两个毛毛球之后,我们理论上就能够还原最终边,只需将每个毛毛球和其正确位置处的毛毛球做对换即可。下面是一个移花接木法的具体例子:
这个例子中,最终边是第一列。我们想把第一列第一行的绿色毛毛球和第一列第五行的红色毛毛球(可以理解成上文中的红一)进行对换。由于第一行的第二列是红色毛毛球(可以理解成上文中的红二),因此,我们先移动第一行,把红二移到第一列,顶掉第一列的绿色。
之后,我们移动第一列,把红一移到红二的位置,也即第一行。
再移动第一行把红一移到红二最初的位置,也即第一行第二列。此时被顶掉的绿色回到了第一列。
注意尽管这个绿色毛毛球的绝对位置相较于一开始没有变,但是其相对位置已经变了(因为在绿色毛毛球被顶掉的期间我们曾移动了第一列),这样,对换就已经完成了,最后只需将第一列移动到正确位置即可(事实上也就是再还原绿色毛毛球被顶掉期间的那一步移动)。另外,在此例中,也可以利用绿色毛毛球实现“移花接木”(上文是利用了红色毛毛球),请大家自行脑补操作过程。
到此为止,我们实际上已经掌握了不含大毛毛球的情况下的过关通法。对于包含大毛毛球的情况,其实也并不复杂,只需稍微变通一下即可。譬如在层先法还原5*6的过程中,我们可以利用运输边每次运输上两个毛毛球,来一次性还原大毛毛球所在的两行或两列。尽管大毛毛球所在的两行两列没法作为运输边,但其他行列依然不受影响。在使用移花接木法时,若想以大毛毛球所在的行或列中的毛毛球作为操作对象(但是实际上一般也用不着),我们也可以利用“回避”的思想,先将其移出大毛毛球的“管辖范围”,完成移花接木之后再将其移回去。总之,大毛毛球的存在对我们的通法影响不大,大家可以自行总结包含大毛毛球时的还原要点。
综合本节的讨论,我们最终可以得出如下重要定理:
定理1 毛毛球的解谜模式是可以通关的。
哈哈,开个玩笑。这个定理当然没有什么实质性作用,不过,或许在心理层面上,它可以给我们一些积极的暗示,让我们克服童年的阴影,获得必胜的信念。祝大家都能早日通关毛毛球的解谜模式!
在上一节中,我尽可能用通俗的语言阐述了毛毛球解谜模式的过关通法,尽管没有用到任何专业术语,但是其中已经蕴含了不少数学思想。在本节中,我将借助群论这一强大的工具,对毛毛球的解谜模式做更严格的讨论和分析,并且做适当的延伸思考。阅读本节可能需要一些高中数学知识作为基础。由于篇幅有限,本节不会介绍太多纯数学的内容,只介绍一些在我们的研究中用得到的必要的概念和性质(有些性质也不加证明)。这些内容在任意一本抽象代数(或叫近世代数)的教材上都可以找到,感兴趣的朋友可以找一本教材进一步学习。
下接后半部分:cv20890995