30代SEの自由帳

最初のタイトルは頓挫した

ヒューマン・リソース・マシーン 攻略 入社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)

  

<前:9年目> <目次> <次:11年目>