【发布时间】:2015-11-02 11:33:18
【问题描述】:
我想编写一个 LMC 程序来有效地找出 3 个不同输入中的中位数的两倍和最小的输入之间的差异。我需要一些帮助来找出一个算法。
这是我目前所拥有的:
INPUT 901 - Input first
STO 399 - Store in 99 (a)
INPUT 901 - Input second
STO 398 - Store in 98 (b)
INPUT 901 - Input third
STO 397 - Store in 97 (c)
LOAD 597 - Load 97 (a)
SUB 298 - Subtract 97 - 98 (a - b)
BRP 8xx - If value positive go to xx (if value is positive a > b else b > a)
LOAD 598 - Load 98 (b)
SUB 299 - Subtract 98 - 99 (b - c)
BRP 8xx - If value positive go to xx (if value is positive b > c else c > b)
LOAD 598 - Load 98 (b) which is the median
ADD 198 - Double to get "twice the median"
我意识到在 sn-p 结束时我不知道哪个输入是最小的,并假设输入已经排序(它们不是)。
我认为我需要以某种方式将输入从最小到最大排序,以有效地执行此操作并确定同一分支中的最小输入和中位数。
【问题讨论】:
标签: algorithm little-man-computer