1)課題
左側にいくつかの「0で終わる数値グループ」が置いてあります。
各グループ内の数値の合計値を算出し、右側に運んで下さい。
2)解説
左のコンベアからパネルを取り出し, 0と書いたパネルを取るまでパネルの値を足し込んでいけば, 上司の要求に応えられます. 手順を考えてみます.
- 入社20 年目の「掛け算のしかた」と同じように, パネルの値を足し込むためのカーペットが必要です. カーペットのラベルに「こたえ」と書いておきます.
- 「こたえ」は, 0から始める必要があります. カーペットの5番に0があるので, これをコピーします.
- 左のコンベアからパネルとカーペットの「こたえ」に置いてあるパネルを足します. 足した結果を「こたえ」にコピーします.
ここまで考えた内容でプログラムを作ってみました. これを実行すると, 左のコンベアからパネルを取り出し, 「こたえ」に足し続ける様子を観察できます.
このプログラムでは, 左のコンベアのパネルがなくなるまで繰り返し, 右のコンベアにパネルを運びませんので, 上司の要求に応えられていません. 左のコンベアから取ったパネルが0の場合の対応を考えます. 左のコンベアから取ったパネルが0であれば, 問題文にある「数値グループ」が終わったということです. カーペットの「こたえ」には, 「数値グループ」のパネルを足した結果となっています. これを右のコンベアに運べば, 上司の要求に応えられます.
INBOXコマンドを使って左のコンベアからパネルを取った直後に, 0であるか判定します. 0であれば, カーペットの「こたえ」においてあるパネルを取り, 右のコンベアに運びます. 運び終われば, 最初に戻って次の「数値グループ」の合計を求めます.
プログラムを実行するとクリアーできます. スピード目標については, 記事を改めて解説します.
0 件のコメント:
コメントを投稿