邓世龙的自留地

兼济天下则达 独善其身则穷

月度归档: 2013年6月

manufactoria通关攻略


《空闲时玩的游戏manufactoria》《通关manufactoria》说过在manufactoria上花了很多时间,并借助外力的帮助下通关了,但是一直没有将它记录下来,现在记下通关方法,以免以后又忘记了。这个游戏对于我对程序设计的理解有很大帮助,给了我许多兴趣。本来给出解答是不应该的,这样会剥夺了别人思考的权力,就像以前的《吉米多维奇》习题集,本来非常火爆的,结果有好事者搞出了习题解答,之后这套习题集就冷下来了。可是每个人都有局限性的,看过《三体》之后,让我知道技术爆炸这个词,也就是徒弟本来不会一项技术,师傅教他之后,他比师傅做的还好,并有了创新。秉着这个观点,把解答贴在这里,让更多的人体验技术爆炸。

关卡按照从左到右,从上到下计数。

  1. Move robots from the entrance(top) to the exit (bottom)! 将机器从入口(顶部)移到出口(底部)! 简单,不多说
  2. If a robot's string starts with blue, accept. Otherwise, reject!  如果机器以蓝色字符开头,则接受。否则,丢弃。
  3. ACCEPT:if there are three or more blues! 如果有三个或三个以上的蓝色的,则接受
  4. ACCEPT: if a robot contains NO red! 如果机器不包含红色的,则接受。
  5. OUTPUT:The input,but with the first symbol at the end!  对于输入的字符,将第一个字符移到末尾作为输出
  6. ACCEPT: if the tape has only alternating colors! 如果只存在交替字符,则接受。 意思就是字符如果是交替出现的则接受,如蓝红蓝红蓝,红蓝红蓝等等,而蓝蓝红,红蓝蓝等出现连续相同的字符,所以不接受
  7. OUTPUT:Replace blue with green, and red with yellow! 输出:将蓝色换成绿色,将红色换成黄色。
  8. ACCEPT: if the tape ends with two blues!  如果末尾是两个蓝色,则接受。
  9. OUTPUT: Put a green at the begining,  and a yellow at the end! 输出: 对于输入的字符,在开头中添加一个绿色字符,在末尾中添加一个黄色字符。
  10. ACCEPT: Strings that begin and end with the same color! 如果开始字符和结束字符时相同,则接受。
  11. ACCEPT: With blue as 1 and red as 0, accept odd binary string! 把蓝色当做1,红色当做0, 接受奇数二进制数。 其实就是接受蓝色结尾的字符。
  12. ACCEPT: Some number of blue, then the same number of red! 接受: 一些蓝色的,然后相同数量的红色的。 也就是接受诸如蓝蓝红红,蓝蓝蓝红红红等,当然空字符也要接受,因为空字符代表0个蓝色,0个红色。
  13. OUTPUT: Swap blue for red, and red for blue! 输出: 将蓝色换成红色,红色换成蓝色。 也就是将字符串中的颜色互换。
  14. OUTPUT: All of the blue, but none of the red! 输出字符串中的所有蓝色字符,不输出红色字符。 也就是将字符串中的所有红色字符去掉,留下蓝色的。
  15. OUTPUT: The input, but with the last symbol moved to the front! 输出: 对于输入的字符,将最后一个字符移动最前面。
  16. OUTPUT: With blue as 1 and red as 0, multiply by 8! 输出:把蓝色当做1,红色当做0,将二进制字符串乘以8. 其实也就是在字符串末尾添加3个0,也就是添加三个红色
  17. ACCEPT: With blue as 1 and red as 0, accept binary strings > 15! 接受:把蓝色当做1,红色当做0,接受大于15的字符串。
  18. An equal number of blue and red, in any order! 只要字符串中包含相同个数的蓝色和红色,则接受。
  19. OUTPUT:Put a yellow in the middle of the (even-lenght) string! 输出: 在字符串(偶数个字符串)的中间放置一个黄色字符。
  20. ACCEPT: X blue, then X red, then X more blue, for any X! 接受: X个蓝色,然后X个红色,接着X个蓝色,对于X没有限制。 也就是接受蓝红蓝,蓝蓝红红蓝蓝等字符串,对于空字符也接受,因为它代表0个蓝色,然后0个红色,接着0个蓝色。
  21. OUTPUT: The input, but with all blues moved to the front! 输出:对于输入,将字符串中所有的蓝色移到前面。
  22. OUTPUT: With blue as 1 and red as 0, add 1 to the binary string! 输出: 将蓝色当做1,红色当做0,将二进制字符串加上1.
  23. ACCEPT: With blue as 1 and red as 0,  accept natural powers of four! 接受:把蓝色当做1,红色当做0,接受四的开方
  24. ACCEPT: (Even-length) strings that repeat midway through! 接受:(偶数长度)接受从中间开始重复的字符串 意思就是接受的字符串是偶数长度,前半段和后半段是一样的,如蓝红红蓝红红,
  25. ACCEPT: If there are exactly twice as many blues as red! 接受:如果蓝色的个数是红色个数的两倍,则接受。
  26. OUTPUT: Reverse the input string! 输出:将输入的字符串逆转输出
  27. OUTPUT: Subtract 1 from the binary string!(Input >= 1) 输出:从二进制字符串中减去1(输入字符串>=1)
  28. ACCEPT: Perfectly symmetrical strings! 接受:完美对称字符串!意思就是回文串,也就是从左读到右和从右读到左是一样的。
  29. ACCEPT: Two identical strings, separated by a green! 接受:两个相同的字符串,由绿色隔开。
  30. ACCEPT: Read the tape as two numbers, A and B, split by a green: accept if A > B! 接受:读入的字符串当做两个二进制数,A和B,由一个绿色隔开,如果A>B则接受。
  31. OUTPUT: Read the tape as two numbers, A and B, split by a green: output A + B! 输出:读入的字符串当做两个二进制数,A和B,由一个绿色隔开,输出A+B的和!