晚上一时兴起,打开久已蒙尘的switch游戏机,玩了会儿马里奥·奥赛德,真正的良心制作:

里面有一个智力关卡:

要求最终摆成下面样子:

上图中,戴帽子的石头是由玩家控制的,可以向上下左右滚动,但不能超过边线,也即只有八个方块可供闪转腾挪。如果石头向右滚动,左边的面会变成向上的面,上面的面会变成向右的面,问如何能把石头摆成对称?

解决此类脑筋急转弯类问题,一般都是有固定套路的:找出最最基本的条件,组合这些条件,就能得到答案。这个智力小游戏也是这样。

关键问题是,这个游戏的基本条件是什么?

先随便试试:

各种旋转之下,似乎就是跟平常的色子差不多,6个面的正方体。在最后一步之前不能旋转到目标位置上,有些像“华容道”。

———————————————————— 正经的分割线 ————————————————————

下面开始分析问题:

一开始看到这个游戏时,可能有些人第一反应是“找规律”,按一定规律进行旋转,便可以在最后转到目标方格内。但稍微想一下会发现,这个规律要求我们的大脑有强大的空间立体记忆能力,要分清6x4=24种情况(和色子一样,第一个面有6种可能,第二个面只有相邻的4种可能,剩下的面就能确定了),再分析每种情况的后续情况,对于人类平均记忆常数7来说,有些吃力了,所以找规律似乎并不是个明智的选择(如果您是天才,当我没说)。

找规律有些行不通了,那就从最基本的条件出发吧。首先,我们会看到,石块的起始状态和最终状态是一样的,那我们可以想一下,有哪些情况下,能使石块的初态和终态一致:

1. 沿着一个方向连续转动4次,石块将和初始状态一致,看图中情况,起始位置和终点位置没在一条直线上,所以这种情况不可能。

2. 右1下1右1下1右1下1(下右、右上、上右、左上、上左、左下、下左都可以),这种曲线转动,连续3次右下,也可以达到初始状态。

第2种情况因为是曲线,显然更符合目前情况,似乎是一条可行方案。但我们很快注意到:游戏中只有两排方格,也就是说,或上或下,是不能达到第3次的,这个矛盾只有两种可能:一是这套方案不可行,二是我们还差一点没发现。

按照服务端编程经验可知:3个右下折线返回原状态的情况,肯定是中间过程携带了状态,这个状态要被保持,不然将不能恢复初始状态。现在的问题是,如何保持这个状态?

我们顺着这个思路,右1下1,都是步长为1的旋转,那步长为2的旋转呢,步长为3的呢,步长为4的呢?步长为4首先不用考虑,因为步长为4已经恢复原始状态。步长为3的情况与步长为1的情况对称,所以只是步长为1情况的全反操作。现在只剩下步长为2的可能性了,我们发现,当步长为2时,状态由当前面,转移到了对立面上,同样也没能保持住状态,难道这题无解了吗?

等等,对立面?步长为2时,状态转移到了对立面上?哈哈,这不就解决了吗?由“哲学家进餐问题之对称解法”(别百度了,你找不到的,这个词是我自创的,以后心血来潮了可能会写出来),我马上想到了,状态对称,操作也对称,就可以做到不破坏状态,用在这里就是说,如果状态转移到对立面上后,操作也马上转移到对立操作上。比如说,石块向右旋转了两格,可以想像成划出了一道水平的镜面,此后上变为下,下变为上,这样,游戏中4x2的方格足矣!

图中限制很明显,最后一步只能是向上,所以,上左、上右、下左、下右这四个以左或右结束的,第一时间排除。

再由图中石块的位置,我们很容易推断出:3次下(或上)操作经对称处理后,只可能是1下2上。再结合我们对称必须做两次(不然最终状态是对称态),最后发现,符合条件的只有“右上”和“左上”,一开始把向上的状态对称为下,再把下对称为上,这样可以保持向上到终点。

下面,我们先给格子编号,方便解说:

11 12 13 14
21 22 23 24

首先,我们可以先尝试一下“右上”方式:①【11】右1到【12】,此时要做翻转,【12】右2到【14】,【14】下1到【24】,②【24】右1到【21】,再翻转,【21】右2到【23】,【23】上1到【13】,③【13】右1到【14】,【14】上1到【…】。好尴尬,无处可上,看来“右上”不行了。

好吧,我们再试一下“左上”方式:①【11】左1到【14】,翻转,【14】左2到【12】,【12】下1到【22】,②【22】左1到【21】,翻转,【21】右2到【23】,【23】上1到【13】,③【13】左1到【12】,【12】上1到【终点】。哦吼,成功了不是?

注:【11】左1到【14】这种,实际操作是【11】右3到【14】,左1是方便说法。

最后大家发现,这个游戏只要6步:

解法一:①【11】右1【12】,【12】下1到【22】,②【22】右1到【23】,【23】上1到【13】,③【13】左1到【12】,【12】上1到【终点】

都到这个份上了,“右上”真的不行吗?其实也是可以的,只是复杂些,我们发现,“右上”只差最后一步了,所以我们可以用状态平移做到:

解法二:①【11】“右3上3”到【14】,②【14】“右3下3”到【23】,③【23】“上3右3”到【12】,④【12】上1到【终点】。

所以,聪明的读者已经发现“套路”的存在了:状态平移。我们通过3个折弯,将状态平移到了我们希望的方格内。

总结起来便是:利用状态对称还原,将一道智力题转化成了套路。

发现了吗?

解法三:初始状态下,【11】下1到【21】,将【21】“左3上3”到【12】,【12】上1到【终点】,也只需12步。

所以可以看出,这个游戏解法多种多样,同样存在解法四、解法五、解法六……

城市套路深,我要回农村。农村路也滑,人心更复杂。

———————————————————— 正文分割线 ————————————————————

以为以上就是所有了吗?Too young...以下才是正文:

经这个游戏,我们可以看出,这个智力游戏的解法中,我们用到的有:基本条件、已有经验、组合,最后得出固定套路。

谨以此文,诚望大家:注重基础,积累经验,总结套路,善用组合。

现在IT界充斥着各种高大尚的技术:大数据、人工智能、区块链、云计算,等等。似乎不做这些枉为IT人,不懂这些便土的掉渣。我承认这些新技术确实有过人之处,但也希望大家能看到这些技术,也不是大的突破,更多是对已有技术的创新组合。九层之台,起于垒土,皮之不存,毛将焉附?而多数IT人,并未强大到举重若轻,万物不絮于怀的境界,所以在此真诚劝诫诸位,重视基本功,少说多做积累经验,不对技术有偏见,面向组合编程。

诚然,像小生这样,其才不扬的智商平庸之辈,在社会上还是很多的,我们羡慕天才智商,我们惊叹奇思妙想,我们自愧才薄智浅。那为何不稳扎稳打,步步为营呢?我们可以找到适合自己的方法,形成自己的套路,进而能更深层次的认知自我,提升自我,岂不美哉?

玩switch游戏——马里奥·奥赛德——的发现相关推荐

  1. 杂牌手柄模拟xboxone手柄_手机就能玩Switch游戏,蛋蛋模拟器+盖世小鸡X2手柄体验...

    最近收到一个很爆炸的消息,国外大神开发出了EGG模拟器(蛋蛋模拟器),让手机也能玩Switch游戏,一直垂涎Switch游戏体验的我怎么能错过呢,必须一探究竟. 据悉,EGG模拟器支持100多款Swi ...

  2. M1 Mac 即将可以玩到更多 Switch 游戏

    对于M1 MAC上无法畅玩Switch 游戏,肯定有很多的朋友觉得非常遗憾! 很长一段时间里,模拟器被游戏爱好者视为体验更多平台游戏,以及重温部分老游戏的首选(毕竟不是所有老游戏的原生平台都那么容易获 ...

  3. python获取游戏数据_Python 爬取 3 万条游戏评分数据,原来程序员最爱玩的游戏竟然是.........

    原标题:Python 爬取 3 万条游戏评分数据,原来程序员最爱玩的游戏竟然是...... 作者 |量化小白H 责编 | 胡巍巍 本文爬取了豆瓣游戏网站上所有可见的游戏评分数据进行分析,全文包括以下几 ...

  4. C语言实训——经点小游戏马里奥开发day2

    C语言实训--经点小游戏马里奥开发day2 角色移动相关 一.直接改变坐标 在制作了卷轴式的地图后,为了发挥卷轴式地图的优越性,马里奥能自由移动是必须的,为了实现马里奥的移动,最开始我尝试的是当用户按 ...

  5. 注入游戏没有焦点_不戴眼镜看3D电影、玩3D游戏,这项技术能焕发端游市场第二春吗?...

    在今年5月的华为2020全球分析师大会,提到"裸眼3D,如果这项技术能够实现,将会给人们带来革命性体验的提升,被应用在生活.娱乐以及医疗.教育等领域.届时,裸眼3D也有望开创出难以想象的新的 ...

  6. python编写赛车游戏单机版_使用Keras和DDPG玩赛车游戏(自动驾驶)

    为什么选择TORCS游戏 <The Open Racing Car Simulator>(TORCS)是一款开源3D赛车模拟游戏 看着AI学会开车是一件很酷的事 可视化并考察神经网络的学习 ...

  7. python编程小游戏-python趣味入门——写几个常玩的游戏

    文档介绍 利用python写"猜数字","猜词语","谁是卧底"这三个游戏,从而快速掌握python编程的入门知识,包括python语法/列 ...

  8. 计算机游戏的作文,玩电脑游戏作文

    玩电脑游戏作文 说起玩电脑游戏,我的心里往往是急不可待.而家长总是不放心,老是提醒要注意休息.别伤了眼睛.时间长了会成驼背--特别担心的是怕我玩上不健康的游戏,影响了学习. 星期五下午,我匆匆忙忙地做 ...

  9. 用计算机玩纸牌,《玩“纸牌”游戏》教学设计

    [教学目标] 知识目标:1.进一步认识窗口.对话框和菜单命令. 2.让学生掌握纸牌游戏的玩法,使学生从玩中学计算机知识. 3.使学生熟练掌握鼠标器的操作方法. 4.初步使用"帮助" ...

最新文章

  1. [SQL Server]Index/deadlock
  2. 2008秋季-计算机软件基础-0917课堂用例(2)
  3. 七夕节,程序员们都怎么哄女朋友开心?
  4. centos7 nginx yum 配置
  5. windbg学习.formats--转换成各种进制
  6. java安全编码指南之:声明和初始化
  7. Oracle创建表空间、创建用户以及授权
  8. python怎么创建变量_Python之变量的创建过程
  9. js 对Array的补充
  10. 简谈ubuntu之DIY发行版
  11. 如何安装python3.7.2_CentOS7下安装Python3及Pip3并保留Python2
  12. t-sql执行结果_用于记录流程执行的T-SQL设计模式
  13. 干货 | 你是不是希望一月入门深度学习,三月中一篇顶会?-- 关于做科研的态度和方法的一点感想...
  14. 第5课 混合编程和芯片手册阅读
  15. Laravel的CURD操作
  16. C++ WindowsAPI 教程:MessageBox函数详解(原创)
  17. C# tcpClient发送和接收
  18. 太阳方位角 太阳天顶角
  19. SQLServer把日期/时间数据转换为指定格式之CONVERT()函数
  20. 最低仅需万元到手,Gooxi AMD Rome平台服务器特价啦

热门文章

  1. How to convert string to wstring?
  2. Delphi 小谈之TList 篇
  3. AppInventor学习笔记(三)——油漆桶应用学习
  4. 使用Canvas绘制背景图
  5. 上海公积金管理中心一览表
  6. 钉钉在线表格,突然没有菜单关闭按钮显示有问题
  7. C语言复习——ACLLIB实现小游戏
  8. 应对老板的“黑”情绪
  9. oppo应用认领,将应用一致的签名写入空包
  10. Ubuntu16.04更新源