第 32 关,库存报告。指令集介绍请看:https://www.annhe.net/article-3828.html。
优化目标
16行393步
代码
16行377步
见 Github。相比16行385步方案,通过优化执行顺序,省掉了计数器初始化时减1的操作
-- HUMAN RESOURCE MACHINE PROGRAM --
JUMP b
a:
COPYFROM 19
OUTBOX
b:
INBOX
COPYTO 15
COPYFROM 14
COPYTO 19
COPYTO 18
JUMP d
sum:
BUMPUP 19
counter:
BUMPUP 18
d:
COPYFROM [18]
JUMPZ a
SUB 15
JUMPZ sum
JUMP counter
15行31步
参考 Github。用于INBOX中ABCX数量都是固定的情况(游戏中A=4, B=5, C=2, X=3),
16行385步
优化掉一个 BUMPUP 18
,由于无论找没找到,计数器 18
都会 +1
,因此在 COPYFROM [18]
之前就将计数器加一,这样就要求计数器初始化时为 -1
。另外
先 INBOX
在初始化计数器,能省 4
步
-- HUMAN RESOURCE MACHINE PROGRAM --
JUMP b
a:
COPYFROM 19
OUTBOX
b:
INBOX
COPYTO 15
COPYFROM 14
COPYTO 19
BUMPDN 19
COPYTO 18
e:
BUMPUP 19
d:
BUMPUP 18
COPYFROM [18]
JUMPZ a
SUB 15
JUMPZ e
JUMP d
第一次pass 17行390步
-- HUMAN RESOURCE MACHINE PROGRAM --
JUMP b
a:
COPYFROM 19
OUTBOX
b:
COPYFROM 14
COPYTO 19
COPYTO 18
INBOX
COPYTO 15
c:
d:
COPYFROM [18]
JUMPZ a
SUB 15
JUMPZ e
BUMPUP 18
JUMP c
e:
BUMPUP 19
BUMPUP 18
JUMP d
发表回复