ヒューマン・リソース・マシーン 攻略 入社10年目 3回で8を
ここで解説している内容なりヒントなりはあくまで筆者の解法に基づいたものなので、別の考え方ももちろんあるよ。ってのは念頭に置いてください。
課題
左側の数値を8倍にして右側に運んでください。 ただし、プログラム上に配置していいaddは3個まで。
使用可能な命令
- inbox
- outbox
- copyfrom
- copyto
- add
- jump
効率目標
- サイズ:9行
- スピード:36ステップ
ヒント
その1
A + A = A * 2
その2
8 = 2 * 2 * 2
回答例 + 解説
サイズ + スピード
回答例 + 解説
ラベル1:// 1セットの開始位置 1. inbox 2. copyto 0 3. add 0 4. copyto 0 5. add 0 6. copyto 0 7. add 0 8. outbox 9. jump:ラベル1へ
8 = 2 * 2 * 2なので、取ってきたパネルを3回、2倍にすればよい。 A * 2 = A + Aなので、2倍にするためには自身と同じ値を加算すれば良いので、
左のパネルをとって(inbox)、加算用に一旦保持(copyto)
自身と足し合わせて(add)、再度計算用に一旦保持(copyto)
再度自身と足し合わせて(add)・・・を3回分実施し、右側に運ぶ(outbox)
これを1セットとして、ひたすらに繰り返す(jump)