《程序员升职记》13.最大值室

本楼层的任务是每次从inbox中去两个数出来,把大的那个输出

解决思路1:

  1. 从inbox取一个数,放到地毯0位置
  2. 从inbox取一个数,放到地毯1位置(此时,手上的数字等于地毯1位置数字)
  3. 把手里数字减去地毯0位置数字
  4. 如果手上数字为负数,跳转到6
  5. 从1位置拷贝数字并输出
  6. 跳转到0,处理下一对数字
  7. 从位置0拷贝数字并输出
  8. 跳转到0,处理下一对数字
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-- HUMAN RESOURCE MACHINE PROGRAM --

a:
b:
INBOX
COPYTO 0
INBOX
COPYTO 1
SUB 0
JUMPN c
COPYFROM 1
OUTBOX
JUMP b
c:
COPYFROM 0
OUTBOX
JUMP a

解决思路2:

  1. 从inbox取一个数,放到地毯0位置
  2. 从inbox取一个数,减去位置0数字
  3. 如果手上数字为负数,跳转到6
  4. 加上位置0数字,并输出
  5. 跳转到1,处理下一对数字
  6. 从0位置拷贝数字并输出
  7. 跳转到1,处理下一对数字
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-- HUMAN RESOURCE MACHINE PROGRAM --

a:
b:
INBOX
COPYTO 0
INBOX
SUB 0
JUMPN c
ADD 0
OUTBOX
JUMP b
c:
COPYFROM 0
OUTBOX
JUMP a