2021/10/14

ヒューマン・リソース・マシーン 入社11年目−引き算の結果

課題

左側のパネル2つごと(A, B)に、2つのパネルを右側に運んで下さい。その際、1つめは(B-A)、2つめが(A-B)になるように運んで下さい。
[SUB]コマンドが使用可能になりました。手元のデータから、カーペット上の指定した番号に置かれたデータを減算します。

解説

ADDコマンドの対となるSUBコマンドの使い方を学ぶ問題です. 

ADDコマンドの場合, コマンドの解釈として次の2つのどちらを取ってもコマンドの実行結果は同じです.

  1. 持っているパネルにカーペットのパネルを加える.
  2. カーペットのパネルに持っているパネルを加える.

一方, SUBコマンドの場合, コマンドの解釈によって結果は異なります.

  1. 持っているパネルからカーペットのパネルを引く.
  2. カーペットのパネルから持っているパネルを引く.

SUBコマンドの動作を確認するために, コマンドを並べました. コードを実行すると, 次のようになります.

  1. カーペットの0番に3を置きます.
  2. カーペットの1番に8を置きます. この時, 8と書いたパネルを持っています.
  3. SUBコマンドを実行します. カーペット0番の3と持っている8とで引き算をします.

SUBコマンドを実行しました. 持っているパネルが8から5に変わりましたので, SUBコマンドは, 持っているパネル8からカーペットのパネル3を引いています. この結果は, 問題文のB-Aに対応します. この結果を右のコンベアに運べば, 上司からの要求の半分に応えられます. 

同様にして, A-Bも計算できます. 考え方は次の通りです.

  1. カーペットの0番はAに相当し, カーペットの1番はBに相当します.
  2. A-Bの結果が必要ですから, Aに相当するカーペット0番のパネルを持ち, SUBコマンドでカーペット1番を指定すれば, A-Bを計算します.
  3. OUTBOXコマンドで, 引き算した結果を右のコンベアに運びます.
このコードを実行すれば, 課題をクリアーできます.

サイズ目標もスピード目標も達成できました.

まとめ

  1. この課題では, SUBコマンドを使って持っているパネルからカーペットのパネルを引く方法を確認しました. (持っているパネル-カーペットのパネル)であり, 逆ではないことに注意が必要です.
  2. 減算した結果は持っているパネルに反映されます.
  3. パネルを持たずにSUBコマンドを実行するとエラーとなります. 逆にカーペットにパネルを置かずにSUBコマンドを実行してもエラーとなります. エラーとなると, 上司に怒られます.

目次

0 件のコメント:

コメントを投稿

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

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