【程序员升职记系列】库存报告

第 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

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注