快速分裂制造工厂


10

背景

Manufactoria已经作为一种游戏进行了营销,但是我们的代码高尔夫球手可以真正地看到它:二维编程语言。Manufactoria编程语言基于单个队列,其中包含一系列彩色标记。指令指针使用传送带在游戏板上移动,并且遇到一系列读写器,它们在队列中进行读取和写入。

该语言非常容易理解,因此学习该语言的最快方法是玩游戏的前几个级别(上面有链接)。

挑战

您面临的挑战是创建一个可以在最短时间内将一个数除以另一个数的程序。

程序的输入将是一串X蓝色标记,后跟Y红色标记。所需的输出将是一串红色标记,长度为X / Y。

在此正式比赛级别中找到了要使用的游戏板:

http://pleasingfungus.com/Manufactoria/?ctm=Divide_and_Conquer;Input_will_be_X_blues_followed_by_Y_reds,_output_X/Y_reds;bbbbbbrr:rrr|bbbrrr:r|bbbbr:rrrr|r:|bbbbbbbbbbbbbbbbbbbbbbbbbbrr rrrrr; 13; 3; 0

它是13x13(最大尺寸),并且已预先配备了正确的测试(请参阅评分部分)。

计分

您的课程分数是该课程通过官方竞赛级别的所有测试所花费的总时间。总时间在级别完成屏幕上给出。

在运行测试时,您很可能必须使用左下角的50倍加速滑块才能快速接收结果(时间加速不会影响得分)。

这是测试中涉及的除法问题的列表:

 6/2 = 3
 3/3 = 1
 4/1 = 4
 0/1 = 0
12/4 = 3
12/3 = 4
 9/3 = 3
10/2 = 5

示例I / O

12/3=4
in:  BBBBBBBBBBBBRRR
out: RRRR

10/2=5
in:  BBBBBBBBBBRR
out: RRRRR

9/3=3
in:  BBBBBBBBBRRR
out: RRR

0/1=0
in:  R
out: 

很棒的东西,那个游戏!这些天并没有真正花时间去打高尔夫,但是会记住这一点。
tomsmeding

Answers:


6

我应该预见到这一点,但无论如何还是不错的。我希望游戏引擎能让我创建8个以上的测试用例。将来我应该应对更多的制造工厂挑战吗?
PhiNotPi 2013年

1
当然,我喜欢他们。
基思·兰德尔

4

得分:15:51

在此处输入图片说明

通过重复减法进行除法。在R中使用Y来跟踪到目前为止我们减去了多少除数。使用Gs来计算商。

例如,对于每个12/4,每个外部循环开始时(在初始G编写器之后)的状态是:

BBBBBBBBBBBB RRRR G
BBBBBBBB RRRR GG
BBBB RRRR GGG
RRRR GGGG

当没有B时,位于左下角的小工具会剥离Rs,然后输出#G-1 Rs。

内循环一次剥离一个B,并使用Y跟踪位置。从外循环开始:

BBBBBBBB RRRR GG
BBBBBBB RYRRR GG
BBBBBB RRYRR GG
BBBBB RRRYR GG
BBBB RRRR GG

内循环是右下角的3x4框。其余的布局可能可以稍微改善,但是内部循环很紧密。

http://pleasingfungus.com/Manufactoria/?lvl=34&code=c11:13f2;g12:2f3;p12:3f7;c13:3f3;p13:4f3;b12:4f2;r14:4f3;p14:7f7;r13:7f2 ; q14:8f7; g13:8f2; p14:9f4; r13:10f2; p14:10f7; b15:10f0; q14:11f7; p15:11f3; r16:11f1; p15:8f0; r15:9f1; c16:8f0; c13 :2f0; c15:2f0; c16:2f0; c17:2f0; c11:3f3; c11:4f3; c11:6f3; c11:7f3; c11:8f3; c11:9f3; c11:5f3; p11:10f7; q11:11f6 ; q11:12f7; r10:12f2; c10:10f2; q16:10f5; y14:6f3; q14:5f3; g15:5f1; c15:4f1; c15:3f1; c17:9f1; c17:8f1; c17:7f1; c17 :6f1; c17:5f1; c17:4f1; c17:3f1; y16:9f1; g17:10f1; q14:2f4; g14:1f3;&ctm = Divide_and_Conquer; Input_will_be_X_blues_followed_by_Y_reds_bb_s | bb:s | r:bb | s |: :rrrr | r:| bbbbbbbbbbbbrrrr:rrr | bbbbbbbbbbbbrrr:rrrr | bbbbbbbbbrrr:rrr | bbbbbbbbbbrr:rrrrr; 13; 3; 0 ;


通过大幅度地重新排列设计的各个部分,我可以将53个部分的得分降低到13:28。
PhiNotPi 2013年

2
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.