Human Resource Machine

前些时候,无意间发现一个神奇的游戏Human Resource Machine。玩了之后发现这货简直是汇编的入门神器。作为对汇编无比神往的我,自然不能放过它。顺便把解法记录下来,算是一个极不正式的汇编学习笔记吧。

2. 繁忙的收发室

取出inbox中的每件东西,然后放到outbox中。

最少指令:

inbox
outbox
jump 1

最快运行:

inbox
outbox
inbox
outbox
jump 1

4. 解扰码器

inbox中取出前两件东西然后以相反的顺序扔进outbox中。重复直到inbox为空。

inbox
copyto 0
inbox
outbox
copyfrom 0
outbox
jump 1

6. 多雨之夏

对于inbox中的两个数加起来,然后把结果放在outbox中。

inbox
copyto 0
inbox
add 0
outbox
jump 1

7. 零之杀手

把所有不是零的东西发到outbox

inbox
jump_zero 0
outbox
jump 0

8. 八倍扩大室

对于inbox中的每样东西,将其增加到三倍,然后outbox结果。

inbox
copyto 0
add 0
add 0
outbox
jump 1

9. 保护零行动

只把零送到outbox

最少指令:

inbox
jump_zero 4
jump 1
outbox
jump 1

最快运行:

inbox
jump_zero 6
inbox
jump_zero 6
jump 0
outbox

10. 八倍扩大器套件

对于inbox中的每个数,将其乘以8,然后把结果放在outbox中。

inbox
copyto 0
add 0
copyto 0
add 0
copyto 0
add 0
outbox
jump 1

11. Sub走廊

对于inbox中的每两个东西,先把第1个从第2个中送去,并把结果放在outbox内。然后,把第2个从第1个中减去,再把结果放在outbox内。重复。

inbox
copyto 0
inbox
copyto 1
sub 0
outbox
copyfrom 0
sub 1
outbox
jump 1

12. 四十倍扩大器

对于inbox内的每个数,将其乘以40,将结果放入outbox

inbox
copyto 0
add 0
copyto 0
add 0
copyto 1
add 1
copyto 1
add 1
copyto 2
add 2
add 1
outbox
jump 1

13. 平等化室

inbox中取出两样东西,如果相等,把1个放到outbox里。不相等的扔掉。重复!

最少指令:

inbox
copyto 0
inbox
sub 0
jump_zero 7
jump 1
add 0
outbox
jump

最快运行:

inbox
copyto 0
inbox
sub 0
jump_zero 12
inbox
copyto 0
inbox
sub 0
jump_zero 12
jump 1
copyfrom 0
outbox
jump 1

14. 最大化室

inbox中取两样东西,将较大的放入outbox。如果它们相等,就随便哪个都行。重复!
最快运行:

inbox
copyto 0
inbox
sub 0
jump_neg 9
add 0
outbox
jump 1
copyfrom 0
outbox
jump 1

16. 绝对正能量

inbox中的每样东西送到outbox中。但是,如果是个负数,请先去掉它的负号。

最少指令:

inbox
jump_neg 4
jump 7
copyto 0
sub 0
sub 0
outbox
jump 1

最快执行:

inbox
jump_neg 5
outbox
jump 1
copyto 0
sub 0
sub 0
outbox
jump 1

17. VIP休息室

对于inbox中的每两个数字:如果两个数字符号相同,把0送到outbox里面。如果两个数字符号不同,把1送到outbox里面。一直重复,直到index为空。
最少指令:

inbox
jump_neg 6
inbox
jump_neg 8
jump 10
inbox
jump_neg 10
copyfrom 5
jump 11
copyfrom 4
outbox
jump 1

最快执行:

inbox
jump_neg 6
inbox
jump_neg 8
jump 11
inbox
jump_neg 11
copyfrom 5
outbox
jump 1
copyfrom 4
outbox
jump 1

22.斐波那契参观者

对于inbox中的每个数,将斐波那契数列中不满那个数的所有数都发送到outbox中。

最少指令:

inbox
copyto 0
bump+ 9
ocpyto 8
copyfrom 0
sub 9
jump_neg 16
copyfrom 9
outbox
copyfrom 9
add 8
copyto 8
sub 9
copyto 9
jump 5
copyfrom 9
sub 9
copyto 9
jump 1

23. 最小的数字

对于inbox中的每个零结尾串,将你在串中看到的最小的数字发送到outbox。你永远不会得到空串。重置之后对每一个串都重复一次。

inbox
copyto 0
inbox
jump_zero 11
sub 0
jump_neg 8
jump 3
add 0
copyto 0
jump 3
copyfrom 0
outbox
jump 1

24. 模运算块

对于inbox中的每两个东西,outbox将第一个除以第二个所得的余数。别担心,你其实并不需要做除法。现在也暂老远不必担心负数。

inbox
copyto 0
inbox
copyto 0
copygrom 0
sub 1
jump_neg 9
jump 6
add 1
outbox
jump 1

25. 累加的倒计时

对于inbox中的每个数,outbox不超过它的所有自然数的种。例如,如果inbox为3,outbox应为6,因为3+2+1+0=6

最少指令:

inbox
copyto 0
copyto 1
bump- 0
jump_neg 9
add 1
copyto 1
jump 4
copyfrom 1
outbox
jump 1

最快执行:

inbox
jump_zero 13
copyto 0
copyto 1
bump- 0
jump_zero 10
add 1
copyto 1
jump 5
copyfrom 1
outbox
jump 1
outbox
jump 1

29. 仓库楼层

想象一下index每个值都是一个地址,而每个地址指向一块地板上0-9的地砖。你的任务:对于inbox中的每个地址,捡起那个地址上的字母并送到outbox

inbox
copyto 10
copyto [10]
outbox
jump 1

30. 串储存楼层

添加新评论