0%

《程序员升职记》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