ヒューマン・リソース・マシーン 攻略 入社37年目 次へつなげよ
ここで解説している内容なりヒントなりはあくまで筆者の解法に基づいたものなので、別の考え方ももちろんあるよ。ってのは念頭に置いてください。
課題
6つのデータペアが配置されている。右側の数値は次のペアの位置番号です。
右側の各数値に対し、数珠つなぎにペアをたどり、その際に通過したペアの左側の文字を右側に運んで下さい。
右側の数値がマイナスの場合、数珠つなぎは終了です。
使用可能な命令
- inbox
- outbox
- copyfrom
- copyto
- add
- sub
- bump+
- bump-
- jump
- jump_if_zero
- jump_if_neg
効率目標
- サイズ:8行
- スピード:63ステップ
ヒント
その1
問題文を命令に置き換えるだけ。
その2
次の参照位置は運んだ文字の右側にあるので、単純に参照位置を右にずらす(→+する)だけ
回答例 + 解説
サイズ + スピード
回答例 + 解説
ラベル1:// 1セットの開始位置 1. inbox ラベル2:// 対象の文字を運ぶ 2. copyto idx 3. copyfrom [idx] 4. outbox 5. bump+ idx 6. copyfrom [idx] 7. jump_if_neg:ラベル1へ 8. jump:ラベル2へ
問題文を命令に置き換えるだけ。
パネルを拾って(inbox)、参照位置として保持(copyto idx)
参照位置の文字を取得(copyfrom [idx])して、右へ運ぶ(outbox)
次の参照位置を取得(bump+)し、マイナスなら(jump_if_neg)なら次のパネルへ
マイナスじゃなければ、次のカーペット上の文字へ(jump)