実績にこんなのがある。
UNCONDITIONAL Solve SIGNAL COMPARATOR without using the JGZ, JLZ, JEZ, or JNZ instructions.
条件分岐命令(JGZ, JLZ, JEZ, JNZ)を使わずに SIGNAL COMPARATOR を解けというもの。
- JGZ は ACC に格納されている値が 0 より大きければ処理される。
- JLZ は ACC に格納されている値が 0 より小さければ処理される。
- JEZ は ACC に格納されている値が 0 であれば処理される。
- JNZ は ACC に格納されている値が 0 でなければ処理される。
で、残りの命令セットで使えそうなのは JMP と JRO だった。
JMP は指定したラベル行から処理を始める。
JRO は指定した行数分進めた位置から処理を始める。
例えば ACC への入力が 1, 2, 3 となっていた場合、
MOV UP, ACC JRO ACC JMP ONE JMP TWO JMP THREE ONE: #入力が1だった場合ここから処理される TWO: #入力が2だった場合ここから処理される THREE: #入力が3だった場合ここから処理される
というようなロジックにすれば JGZ, JLZ, JEZ, JNZ を使わずとも処理が書けるってわけだ。
仕事中に閃いたおかげで実績解除することができた。やったぜ!