2021/12/02

ヒューマン・リソース・マシーン 入社31年目−文字列を逆に

目次

1)課題

複数の「0区切り文字列」が置かれています。

各文字列を逆から順に読んだ結果を、右側に運んで下さい。

2)考え方

方針は次のようになります.

  1. 左のコンベアからパネルを取り出し, カーペットの0番から順にパネルを置きます.
  2. パネルの値が「0」なら, 逆順にカーペットからパネルを取り, 右のコンベアに運びます.

左のコンベアから取り出したパネルを置くカーペットの位置を示すために, アドレスを記録するパネルが必要となります. また, このアドレスは右のコンベアに運ぶパネルの位置も示します. 

3)実装

方針に従い, プログラムを作成します.

元々,「0」と書いてあるパネルを置いてあるカーペットに「ZERO」と名前を付けます. また, 左のコンベアから取り出したパネルを置くカーペットの位置を「アドレス」によって示します. 続けて, INBOXコマンドによりパネルを取り出し, 「0区切り文字」であるか判定します. 0であれば「はこびだし」, 0でなければ「とりこみ」に進みます.

左のコンベアからパネルを取り込むためのコードを作成しました. 「アドレス」が示すカーペットの位置にパネルを置き, 「アドレス」の値を増やします. JUMPコマンドにより, 次のパネルを取り込みます. 

ここまで作成したコードをステップ実行し, 動作を確認しました. パネルをカーペットに配置し, 「0区切り文字」を取り出したところで「はこびだし」に進んでいます. 続けて「はこびだし」の処理を書いていきます. ここで, 「アドレス」の値が「4」となっていることに注意してください.

運び出すためには, まず, 「アドレス」の値を1減らします. 「アドレス」の値がマイナスになった場合, すべてのパネルを運び出せたので先頭に戻ります. 「アドレス」の値が0以上の場合, 「アドレス」が示すカーペットのパネルを取り出し, 右のコンベアに運びます. 「アドレス」の値がマイナスになるまで繰り返します. 

クリアーできました. サイズ目標まであと1行です. 

目次

0 件のコメント:

コメントを投稿

ヒューマン・リソース・マシーン 入社41年目−並べ替えよ

目次 1)課題 0を終端とした文字列がいくつか流れてきます。各文字列に対してソート(並べ替え)を行い、小さい順(昇順)に右側へ運んでください。 2)状況の確認 この問題では, 予めコードが入っています. このコードを実行して, 何をするコードなのか確かめます.  左のコンベアから...