1)課題
複数の「0区切り文字列」が置かれています。
各文字列を逆から順に読んだ結果を、右側に運んで下さい。
2)考え方
方針は次のようになります.
- 左のコンベアからパネルを取り出し, カーペットの0番から順にパネルを置きます.
- パネルの値が「0」なら, 逆順にカーペットからパネルを取り, 右のコンベアに運びます.
左のコンベアから取り出したパネルを置くカーペットの位置を示すために, アドレスを記録するパネルが必要となります. また, このアドレスは右のコンベアに運ぶパネルの位置も示します.
3)実装
方針に従い, プログラムを作成します.
元々,「0」と書いてあるパネルを置いてあるカーペットに「ZERO」と名前を付けます. また, 左のコンベアから取り出したパネルを置くカーペットの位置を「アドレス」によって示します. 続けて, INBOXコマンドによりパネルを取り出し, 「0区切り文字」であるか判定します. 0であれば「はこびだし」, 0でなければ「とりこみ」に進みます.
左のコンベアからパネルを取り込むためのコードを作成しました. 「アドレス」が示すカーペットの位置にパネルを置き, 「アドレス」の値を増やします. JUMPコマンドにより, 次のパネルを取り込みます.
ここまで作成したコードをステップ実行し, 動作を確認しました. パネルをカーペットに配置し, 「0区切り文字」を取り出したところで「はこびだし」に進んでいます. 続けて「はこびだし」の処理を書いていきます. ここで, 「アドレス」の値が「4」となっていることに注意してください.
運び出すためには, まず, 「アドレス」の値を1減らします. 「アドレス」の値がマイナスになった場合, すべてのパネルを運び出せたので先頭に戻ります. 「アドレス」の値が0以上の場合, 「アドレス」が示すカーペットのパネルを取り出し, 右のコンベアに運びます. 「アドレス」の値がマイナスになるまで繰り返します.
クリアーできました. サイズ目標まであと1行です.
0 件のコメント:
コメントを投稿