好长时间没有出思考题了,MC吧里也没有别人来调动气氛。2016年我太忙了,疏于照顾这里有1年的时间,真是对不住各位。以后会更忙,真没办法。不发牢骚了,我争取2017年能多在MC吧里组织大家一块儿玩儿吧。
这道题有些难,我大概试了一下,如果要做一个比较好的简单的细胞自动机,而且用动画来表示出细胞生死变化的一系列过程,需要点儿思维技巧,如果通过遍历的方法来驱动细胞自动机的话,计算量就非常大了,而且会算错。效果最好的动画是将矩阵转化为黑白图片的样子,如果单纯的看矩阵的话,有些费眼睛。
康威的“生命游戏”是什么,请百度百科“生命游戏”和“细胞自动机”两个词条,或者wiki一下“game of life”,说得更清楚周到。有一个专门讨论“生命游戏”的网站叫“lifewiki”,各位如果有兴趣可以去看看。嗯,
科研圈的文章《这个游戏没有玩家,为何在学术圈火了半个世纪?》:http://chuansong.me/n/1453564044122
这是我几天前从一个叫“科研圈”的微信公众号上看到的,已经写得非常棒了。我几年前也玩儿过相关的软件,但当时不了解规则,没细致的研究它。
规则大概如下(抄科研圈的那篇文章里的):
康威在挑选这些基本规则的时候花了很大的力气,还进行了很长时间的实验。他的目的是让整个群体的行为变得无法预测。他规定细胞的生死或繁衍的规则如下:
生:与2或3个细胞相邻的细胞将活到下一轮;
死:与4个及以上细胞相邻,则因为过度拥挤而死;与1个或0个细胞相邻,则因为孤独而死;
繁衍:一个空格若与3个细胞相邻,则在下一轮时,这个空格内将产生一个新细胞。
看完科研圈的那篇文章,我想各位已经知道这道题要做什么了。我说说题面:
(1)做一个10×10的全0矩阵M
(2)在M中自定义(可随机安排)一个简单的初始图形(建议使用“滑翔机”图形,比较方便验算。我也鼓励自由发挥啊!),可以用1表示,在黑白图片里可以用255表示
(3)录制一个小动画,完成初始图形在“生命游戏”规则下的前5步变换(可以更多的步数,但不知道MC能否正确的做出来,我没试过)
(4)当M中的点超出了10×10矩阵范围时,M内的变换过程不应出错——也就是说10×10矩阵范围之外的场地仅是在动画里不显示出来,并不等于都是0。
嗯,以上(1)、(2)、(3)条比较容易做到,第(4)条挺难的,我还没有太好的思路。
给大家介绍一个不错的康威生命游戏的模拟软件——比如手机上的那种小APP要好很多——
https://sourceforge.net/projects/golly/?source=directory
里面有一些很牛掰的生命游戏作品,这玩意儿很烧脑的。
我从科研圈的那篇文章中感到,康威的生命游戏不太适合于用MC来实现,MC处理程序的过程是有序的,一维的,而康威的游戏是2维的(我找到了3维的康威游戏),而且所有点的变化都是条件触发的,用MC处理的时候,如果要满足这个条件,就需要每次变换都遍历一次矩阵范围内的所有的点,需要的计算量就非常大了,而且非常容易出错——各位自己试试看就知道了。也就是说,这种游戏我感觉不适于用图灵计算机来做,不知道,得花一些时间才能想明白。
据说生命游戏与后来的分形有一定关系,所以希望MC吧里对分形感兴趣的朋友也来试试看这道题哈!
这道题有些难,我大概试了一下,如果要做一个比较好的简单的细胞自动机,而且用动画来表示出细胞生死变化的一系列过程,需要点儿思维技巧,如果通过遍历的方法来驱动细胞自动机的话,计算量就非常大了,而且会算错。效果最好的动画是将矩阵转化为黑白图片的样子,如果单纯的看矩阵的话,有些费眼睛。
康威的“生命游戏”是什么,请百度百科“生命游戏”和“细胞自动机”两个词条,或者wiki一下“game of life”,说得更清楚周到。有一个专门讨论“生命游戏”的网站叫“lifewiki”,各位如果有兴趣可以去看看。嗯,
科研圈的文章《这个游戏没有玩家,为何在学术圈火了半个世纪?》:http://chuansong.me/n/1453564044122
这是我几天前从一个叫“科研圈”的微信公众号上看到的,已经写得非常棒了。我几年前也玩儿过相关的软件,但当时不了解规则,没细致的研究它。
规则大概如下(抄科研圈的那篇文章里的):
康威在挑选这些基本规则的时候花了很大的力气,还进行了很长时间的实验。他的目的是让整个群体的行为变得无法预测。他规定细胞的生死或繁衍的规则如下:
生:与2或3个细胞相邻的细胞将活到下一轮;
死:与4个及以上细胞相邻,则因为过度拥挤而死;与1个或0个细胞相邻,则因为孤独而死;
繁衍:一个空格若与3个细胞相邻,则在下一轮时,这个空格内将产生一个新细胞。
看完科研圈的那篇文章,我想各位已经知道这道题要做什么了。我说说题面:
(1)做一个10×10的全0矩阵M
(2)在M中自定义(可随机安排)一个简单的初始图形(建议使用“滑翔机”图形,比较方便验算。我也鼓励自由发挥啊!),可以用1表示,在黑白图片里可以用255表示
(3)录制一个小动画,完成初始图形在“生命游戏”规则下的前5步变换(可以更多的步数,但不知道MC能否正确的做出来,我没试过)
(4)当M中的点超出了10×10矩阵范围时,M内的变换过程不应出错——也就是说10×10矩阵范围之外的场地仅是在动画里不显示出来,并不等于都是0。
嗯,以上(1)、(2)、(3)条比较容易做到,第(4)条挺难的,我还没有太好的思路。
给大家介绍一个不错的康威生命游戏的模拟软件——比如手机上的那种小APP要好很多——
https://sourceforge.net/projects/golly/?source=directory
里面有一些很牛掰的生命游戏作品,这玩意儿很烧脑的。
我从科研圈的那篇文章中感到,康威的生命游戏不太适合于用MC来实现,MC处理程序的过程是有序的,一维的,而康威的游戏是2维的(我找到了3维的康威游戏),而且所有点的变化都是条件触发的,用MC处理的时候,如果要满足这个条件,就需要每次变换都遍历一次矩阵范围内的所有的点,需要的计算量就非常大了,而且非常容易出错——各位自己试试看就知道了。也就是说,这种游戏我感觉不适于用图灵计算机来做,不知道,得花一些时间才能想明白。
据说生命游戏与后来的分形有一定关系,所以希望MC吧里对分形感兴趣的朋友也来试试看这道题哈!