用户工具

站点工具


04-游戏:程序员升职记:035

035 删除重复项

优化目标: 17行167步

16行149步

见: https://github.com/atesgoral/hrm-solutions/blob/master/solutions/35-Duplicate-Removal-17.167/16.149-fbastien.asm

执行顺序很好,不用来回取变量

snippet.asm
start:
INBOX
JUMP     out
 
up:
BUMPUP   14
COPYFROM 12
 
out:
COPYTO  [14]
OUTBOX
 
loop:
COPYFROM 14
COPYTO   13
INBOX
COPYTO   12
 
compare:
SUB      [13]
JUMPZ    loop
BUMPDN   13
JUMPN    up
COPYFROM 12
JUMP     compare

15行177步

snippet.asm
start:
INBOX
COPYTO   [14]
 
out:
COPYFROM [14]
OUTBOX
BUMPUP   14
 
up:
COPYFROM 14
COPYTO   13
 
loop:
INBOX
COPYTO   [14]
 
compare:
BUMPDN   13
JUMPN    out
COPYFROM [13]
SUB      [14]
JUMPZ    up
JUMP     compare

21行161步

snippet.asm
init:
INBOX
COPYTO   0
OUTBOX
COPYFROM 14
COPYTO   13
BUMPUP   13
JUMP     loop
 
out:
COPYFROM [13]
OUTBOX
BUMPUP   13
 
loop:
COPYFROM 14
COPYTO   12
INBOX
COPYTO   [13]
 
compare:
SUB      [12]
JUMPZ    loop
BUMPUP   12
SUB      13
JUMPZ    out
COPYFROM [13]
JUMP     compare

第一次pass 25行224步

snippet.asm
COPYFROM 14
COPYTO   13
COPYTO   12
INBOX
COPYTO   0
OUTBOX
JUMP     loop
 
out:
COPYFROM 11
OUTBOX
 
reset:
COPYFROM 14
COPYTO   12
 
loop:
INBOX
COPYTO   11
 
find:
COPYFROM 13
SUB      12
JUMPN    notfound
COPYFROM [12]
SUB      11
JUMPZ    reset
BUMPUP   12
JUMP     find
 
notfound:
BUMPUP   13
COPYFROM 11
COPYTO   [13]
JUMP     out
04-游戏/程序员升职记/035.txt · 最后更改: 2020/04/07 06:36 由 annhe