编写一个Manufactoria程序,该程序将接受空的输入磁带。但是请不要快做!我的意思是,快速编写程序,但不要让它快速运行。程序越慢,越好,只要它最终终止即可。下面的示例程序采用3:51(模拟器报告的“总时间”)。
您的程序从空磁带开始。它必须乱涂一点,但最终会到达输出平方。如果需要,可以将数据保留在磁带上。7x7 Manufactoria板上最慢的程序胜出!
您的右箭头键是您的朋友,它可以加快模拟器的速度。
破坏模拟器的奖励积分!
编写一个Manufactoria程序,该程序将接受空的输入磁带。但是请不要快做!我的意思是,快速编写程序,但不要让它快速运行。程序越慢,越好,只要它最终终止即可。下面的示例程序采用3:51(模拟器报告的“总时间”)。
您的程序从空磁带开始。它必须乱涂一点,但最终会到达输出平方。如果需要,可以将数据保留在磁带上。7x7 Manufactoria板上最慢的程序胜出!
您的右箭头键是您的朋友,它可以加快模拟器的速度。
破坏模拟器的奖励积分!
Answers:
该机器基本上是一个里程表,以3为底数运行,使用红色,蓝色和黄色符号分别代表数字0、1和2。绿色符号用于标记数字的结尾。开始时,磁带用49个红色符号初始化。这是通过机器顶部三行中的部件完成的。底部的四行处理循环增加数字的任务。在每次迭代中,左侧的两个分支单元将计算出如何将增量应用于当前数字,然后右侧的分支单元将复制剩余的,不受影响的数字。
以前,我曾尝试估算机器的运行时间(如果允许其运行到完成状态),但是在此级别上,仅考虑迭代次数就更有意义。粗略地说,完成一次迭代大约需要一分钟-但是即使花费一秒钟也只会将运行时间减少一个数量级。
我今天重新阅读了有关Manufactoria的问题,突然有一个想法会极大地减慢该过程:新程序不会仅仅拥有50个值和3次更改颜色,而是这样做了,但是之后,它减少了值乘以1,然后再次进行变色,直到出现空磁带,然后程序停止。
队列一次不会存储超过50个值,因此将过多的值压入磁带没有用-它们会立即被压出。和以前一样,传送带的目的是使物品运行所需的时间最大化。实际上,只需进行最小的调整即可实现运行时间的大幅增加。