Manufactoria:生成最慢的接收程序


18

编写一个Manufactoria程序,该程序将接受空的输入磁带。但是请不要快做!我的意思是,快速编写程序,但不要让它快速运行。程序越慢,越好,只要它最终终止即可。下面的示例程序采用3:51(模拟器报告的“总时间”)。

在此处输入图片说明

http://pleasingfungus.com/Manufactoria/?lvl=36&code=g12:5f3;r9:8f1;p12:9f3;c13:9f0;r11:9f0;r10:9f0;r9:9f1;b11:8f0;b10:8f1 ; r9:7f2; c10:7f2; c11:7f2; c12:7f3; q12:8f3; y13:8f2; y14:8f2; y15:8f1; y15:7f0; y14:7f0; y13:7f0; g12:6f3;&ctm = Slow_Accepter!; Generate_the_slowest_possible_accepting_machine;:; 7; 3; 0 ;

您的程序从空磁带开始。它必须乱涂一点,但最终会到达输出平方。如果需要,可以将数据保留在磁带上。7x7 Manufactoria板上最慢的程序胜出!

您的右箭头键是您的朋友,它可以加快模拟器的速度。

破坏模拟器的奖励积分!


因此,除了空磁带外,没有其他接受/拒绝输入的要求吗?
波动率

@波动率:正确。
基思·兰德尔

令人讨厌的是,除非磁带最后没有空,否则模拟器不会报告运行时间,因为它与挑战的预期输出不匹配。(幸运的是,我最后不需要很多额外的空间就可以擦除磁带。)
面包店

Answers:


22

〜10 23次迭代〜10 15次迭代 〜10 8次迭代

工厂设置

http://pleasingfungus.com/Manufactoria/?lvl=32&code=g9:7f2;b12:8f2;p13:8f5;p11:8f3;r14:8f0;q11:10f3;q13:7f1;y13:9f1;r10:10f1 ; c12:9f2; c9:9f2; i11:9f7; i10:9f4; c9:8f3; i10:8f2; c14:9f0; c15:9f0; c15:8f3; c15:7f3; c14:7f2; g12:7f0; c11 :7f3; c10:7f2; q9:6f7; r10:6f1; r9:5f3; c11:6f0; r10:5f2; r11:5f1; r9:4f3; r10:4f0; r11:4f0; y12:5f2; y13:5f2 ; y14:5f3; y14:6f0; y13:6f0; y12:6f0;&ctm = Slow_Accepter!; Generate_the_slowest_possible_accepting_machine;:; 7; 3; 0 ;

该机器基本上是一个里程表,以3为底数运行,使用红色,蓝色和黄色符号分别代表数字0、1和2。绿色符号用于标记数字的结尾。开始时,磁带用49个红色符号初始化。这是通过机器顶部三行中的部件完成的。底部的四行处理循环增加数字的任务。在每次迭代中,左侧的两个分支单元将计算出如何将增量应用于当前数字,然后右侧的分支单元将复制剩余的,不受影响的数字。

以前,我曾尝试估算机器的运行时间(如果允许其运行到完成状态),但是在此级别上,仅考虑迭代次数就更有意义。粗略地说,完成一次迭代大约需要一分钟-但是即使花费一秒钟也只会将运行时间减少一个数量级。


4
好吧,我放弃了
波动性

2
不要放弃!毫无疑问,这仍然只是表面。例如,仅通过一个或两个单元来压缩里程表逻辑将允许运行时间增加一个数量级。
面包箱


5
如果有帮助,我经常提交的高尔夫球答案要落后于领队,因为这是另一种方法。我喜欢这个网站的一件事是,它保留了响应的多样性。
面包箱

1
@SimplyBeautifulArt可以想象通过将成对的符号用作数字来改善(在这种情况下,您可以使用16个中的15个而不是4个中的3个)。当然,如果要实现这一目标,那么小板子会遇到很多困难。
feersum

8

603:25

在线测试

我今天重新阅读了有关Manufactoria的问题,突然有一个想法会极大地减慢该过程:新程序不会仅仅拥有50个值和3次更改颜色,而是这样做了,但是之后,它减少了值乘以1,然后再次进行变色,直到出现空磁带,然后程序停止。

队列一次不会存储超过50个值,因此将过多的值压入磁带没有用-它们会立即被压出。和以前一样,传送带的目的是使物品运行所需的时间最大化。实际上,只需进行最小的调整即可实现运行时间的大幅增加。

面包箱的答案仍然遥遥无期


有趣的是我们的解决方案有多相似。我们都从一个9x6乘法器开始,然后将branch和x6组放在同一位置!不过,您的家具更优雅-您用完了每个隔间并用干净的胶带封住。
Igby Largeman

5

33:33

为此工作了一段时间(波动率将门槛设置得很高),但是当我达到33:33时,我认为这是一个整洁的时机。

该策略非常简单:基本上在磁带上填充一种颜色,然后再填充另一种颜色,然后再填充另一种颜色,并始终尝试在每次写入(或一组写入)之间遍历尽可能多的单元。

我敢肯定,有很多方法可以使我们走得更远。

忙海狸

等级连结


+1我将看到如何击败它;)(尽管我可能不会走得太远)
波动性
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.