2021/12/08

ヒューマン・リソース・マシーン 入社34年目−母音を省け

目次

1)課題

左側の文字を右側へ運んで下さい。ただし、母音(A, E, I, O, U)は捨ててください。

2)考え方

カーペットに母音がありますので, 左のコンベアから取り出したパネルがカーペットのパネルとすべて異なれば, 母音ではありません. 次のように考えていきます.

  1. カーペットに「アドレス」を作り, 0で初期化する.
  2. 左のコンベアから取り出したパネルをカーペットの「文字」に配置する.
  3. 「アドレス」が示すパネルと「文字」を比較し, 同じなら「文字」は母音なので先頭に戻る. 異なるなら母音ではないので, アドレスを1増やす.
  4. 「アドレス」が示すパネルが「0」なら, 「文字」が母音でないので, 「文字」を右のコンベアに運びます.

3)実装

プログラムを作っていきます. まずは初期化から.

カーペットに名前を付けます. 元々, カーペットの5番に置いてあった0が母音の終了を表すので, 「終端」と名前を付けています. カーペットに「アドレス」と「文字」の名前を付け, 「アドレス」には「終端」からコピーした0を配置し, 「文字」には左のコンベアから取り出したパネルを配置します.

「アドレス」が示すパネルをカーペットから取り, 終端に到達したか判定します. 「0」であれば終端に到達し, 「文字」は母音ではありませんので右のコンベアに運びます.

「アドレス」が示すパネルが「0」でない場合, 母音であるか判定します. 母音であるパネルを持っていますので, SUBコマンドを使って「文字」と比較します. 結果が0なら母音, 異なるなら子音です. 母音の時, パネルを捨てるので, 先頭に戻ります. 子音の時, 「アドレス」を1増やし, 次の母音と比較するために5行目に戻ります.

プログラムを実行すると課題をクリアーできます. サイズ目標, スピード目標共にあと一歩, といったところです. 

目次

0 件のコメント:

コメントを投稿

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

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