課題
左側のパネル2つごと(A, B)に、2つのパネルを右側に運んで下さい。その際、1つめは(B-A)、2つめが(A-B)になるように運んで下さい。
[SUB]コマンドが使用可能になりました。手元のデータから、カーペット上の指定した番号に置かれたデータを減算します。
解説
ADDコマンドの対となるSUBコマンドの使い方を学ぶ問題です.
ADDコマンドの場合, コマンドの解釈として次の2つのどちらを取ってもコマンドの実行結果は同じです.
- 持っているパネルにカーペットのパネルを加える.
- カーペットのパネルに持っているパネルを加える.
一方, SUBコマンドの場合, コマンドの解釈によって結果は異なります.
- 持っているパネルからカーペットのパネルを引く.
- カーペットのパネルから持っているパネルを引く.
SUBコマンドの動作を確認するために, コマンドを並べました. コードを実行すると, 次のようになります.
- カーペットの0番に3を置きます.
- カーペットの1番に8を置きます. この時, 8と書いたパネルを持っています.
- SUBコマンドを実行します. カーペット0番の3と持っている8とで引き算をします.
SUBコマンドを実行しました. 持っているパネルが8から5に変わりましたので, SUBコマンドは, 持っているパネル8からカーペットのパネル3を引いています. この結果は, 問題文のB-Aに対応します. この結果を右のコンベアに運べば, 上司からの要求の半分に応えられます.
同様にして, A-Bも計算できます. 考え方は次の通りです.
- カーペットの0番はAに相当し, カーペットの1番はBに相当します.
- A-Bの結果が必要ですから, Aに相当するカーペット0番のパネルを持ち, SUBコマンドでカーペット1番を指定すれば, A-Bを計算します.
- OUTBOXコマンドで, 引き算した結果を右のコンベアに運びます.
サイズ目標もスピード目標も達成できました.
まとめ
- この課題では, SUBコマンドを使って持っているパネルからカーペットのパネルを引く方法を確認しました. (持っているパネル-カーペットのパネル)であり, 逆ではないことに注意が必要です.
- 減算した結果は持っているパネルに反映されます.
- パネルを持たずにSUBコマンドを実行するとエラーとなります. 逆にカーペットにパネルを置かずにSUBコマンドを実行してもエラーとなります. エラーとなると, 上司に怒られます.
0 件のコメント:
コメントを投稿