第 32 关,库存报告。指令集介绍请看:https://www.annhe.net/article-3828.html。
优化目标
16行393步
代码
16行377步
见 Github。相比16行385步方案,通过优化执行顺序,省掉了计数器初始化时减1的操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
-- 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
步
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
-- 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步
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
-- 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 |
发表回复