中央値の2倍と3つの異なる入力の最小値の違いを効率的に見つけるためのLMCプログラムを作成したいと思います。このためのアルゴリズムを理解するのに助けが必要です。
これが私がこれまでに持っているものです:
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"
スニペットの最後で、どの入力が最小であるかわからず、入力がすでにソートされている(そうではない)と想定していたことに気付きました。
これを効率的に行い、同じブランチ内の最小入力と中央値を決定するには、入力を最小から最大に並べ替える必要があると思います。
私は小さなコンピューターの言語を知りませんが、それは問題ではありません、それはアルゴリズムの質問です。
まず、3つのパラメーターの名前を少し混乱させました(最初に99がaであると言い、次に97がaであると言いました)。
99、98、97の3つのパラメータ(たとえば、a、b、c)をロードする必要があります。次に、99(a)をロードし、99(a)から98(b)を引きます。
結果が正の場合(99が98より大きい)、98と99を交換する必要があるため、2つの間の最小値は場所99にあります。
ここで98(c)をロードし、そこから97を引きます。結果が正の場合は、97と98を交換して、2つの間の最小値がロケーション98にあるようにします。
最後に、98と99の場所に2つの最小の数値があります。これは、最小と中央値です。
99をロードし、そこから98を引きます。結果が正の場合、99には中央値が含まれ、98には最小値が含まれます。それ以外の場合は、逆になります。
これで、中央値を2倍にして、この数値と最小値の差を計算できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加