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