0%

Manufactoria 一个好玩的自动机编程游戏

自从在知乎上发现了这么个有意思的问题:

有哪些很有「工程师情怀」的游戏?

,就时不时上去关注一下有没有新的回答。

原帖来自 Matrix67 当年刷NOIP的时候经常上的一个博客,好久没上了-_-///

引用下 Matrix67 的评价:

这是我所见过的程序设计类 Puzzle 游戏中最好玩的一个。它是真正意义上的程序设计游戏,游戏不但提供了完备的读写和流程控制功能,甚至还引入了随机测试数据。游戏很快就会引入算法的思想,因为玩家渐渐会发现,这些谜题并不是单靠模拟就能解决的;后面的谜题则越发困难,需要相当有技巧性的算法设计,对脑力绝对是一个大挑战。如果你热爱算法与程序设计,你一定会爱上这个游戏的。


下面上游戏~这是个写得很简单的Flash游戏,整个swf就3M大小。

然后吐槽一下:谁说静态博客不好用的>_</ !!!兼容html格式之后,音乐、视频、Flash游戏……啥都能给你插进来哈哈~~~

游戏本体在此



我的游戏记录

(话说不知道页面折叠这种东西能不能用html写出来…)


1.Robotoast!

就是从起点到终点。

1

2.Robocoffee!

接收条件:起点是蓝色点。

一个Branch进行判断选择即可。

2

3.Robolamp!

接收条件:至少三个蓝色点。

这里我直接把Branch横着摆,红点则循环,蓝点通过,判断三次结束。

3

4.1.Robofish!

接收条件:无红点。

遇到红点直接结束,蓝点循环即可。

4.1

5.1.Robobugs!

接收条件:必须是红蓝点交替。

正确的路径只有 红->蓝->红->循环 或者 蓝->红->蓝->循环,其他的都结束。

5.1

6.1.Robocats!

接收条件:必须以两个蓝点结束。

6.1

4.2.RC Cars!

从这里开始新增了一种设备:Writer。功能是能够在纸带上打印颜色点。

输出:把第一个点放在最后,输出整个序列。

只需处理第一个点,剩下的保持不变即可。

4.2

5.2.Robocars!

输出:把蓝点替换成绿点,红点替换成黄点。

5.2

6.2.Robostilts!

输出:以绿点开始,黄点结束,中间是原始的输入序列。

6.2

7.1.Robobears!

接收条件:起始点与结束点必须是相同颜色。

7.1

7.2.Milidogs!

接收条件:蓝点作为1,红点作为0,当纸袋表示的数字是奇数时才接收。

其实就是要求最后一个点是蓝点,思路与 6.1.Robocats! 类似。

7.2

7.3.Androids!

接收条件:蓝点在前,后面要跟上相同数量的红点。

这一关真的是想了很久,受网上其他玩家的方案启发:

首先打上一个黄/绿点作为起始标记,然后对于序列中,第一个红/蓝点不打,其余打上相同颜色的点,然后循环。

简单地说就是每一轮减少一组红/蓝点,直到全部结束。

7.3

7.4.Roborockets!

输出:交换红/蓝点。

跟 5.2.Robocars! 类似,也是替换点,这里只是加个起始的绿点标记即可。

7.4

7.5.Roboplanes!

输出:输出全部蓝点,忽略红点。

7.5

7.6.Robomecha!

输出:把最后一个点放在最前面,输出原始序列。

与 4.2.RC Cars! 相反。首先打上绿点标记,用于判断最后一个点,找到最后一个点以后剩下的就是原样输出了。

7.6

8.1.Soldiers!

输出:蓝点作为1,红点作为0,将序列代表的数字乘以8.

乘8就是左移3位,直接在末尾打上3个0即可。

8.1

8.2.Robotanks!

接收条件:蓝点作为1,红点作为0,当序列代表的数字大于15时接收。

15的二进制是1111,直接判断整个序列的数位是不是大于4即可。当然,一开始要先把先导0给消除掉。

用了最朴素的方法,因为判断太多导致摆放改了很久。

8.2

8.3.Robo-children!

接收条件:整个序列中蓝点的数量与红点的数量相同,顺序不限。

本题的思路与 7.3.Androids! 完全一致,没有顺序要求,只要把之前空着的另外一边补上即可。(话说当时做 7.3.Androids! 时就是先搭的一整个,最后发现有顺序要求才把左边的删掉的…)

8.3

未完待续