30代SEの自由帳

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

ヒューマン・リソース・マシーン 攻略 入社30年目 隠された暗号

ここで解説している内容なりヒントなりはあくまで筆者の解法に基づいたものなので、別の考え方ももちろんあるよ。ってのは念頭に置いてください。

課題

左側にいくつかのアドレス番号があります。
それが指す文字を1文字目としてそれに続く文字を「0」に遭遇するまで、全て右側に運んで下さい。

使用可能な命令

  • inbox
  • outbox
  • copyfrom
  • copyto
  • add
  • sub
  • bump+
  • bump-
  • jump
  • jump_if_zero
  • jump_if_neg

効率目標

  • サイズ:7行
  • スピード:203ステップ

ヒント

その1

今回も「間接指定」のチュートリアル

その2

0を拾うまで間接指定の位置をずらせば良い。
間接指定の位置をずらすためには何を弄れば良い?

回答例 + 解説

サイズ + スピード

回答例 + 解説

ラベル1// 1セットの開始位置
1. inbox
2. copyto 24
ラベル2// 指定位置のパネルを取得
3. copyfrom [24]
4. jump_if_zero:ラベル15. outbox
6. bump+ 24
7. jump:ラベル2

今回もチュートリアル的な問題。「間接指定」の位置はずらせるんだよ。って感じの

左のパネルを取って(inbox)、間接指定用の番号として保持(copyto)
保持した番号を使って間接指定でパネルを取得(copyfrom)して、0ならば(jump_if_zero)次のパネルへ
0じゃないなら右へ運んで(outbox)、間接指定の位置を次へ進める(bump+)
これを0を拾うまで繰り返す(jump)

  

<前:29年目> <目次> <次:31年目>