1)課題
左側の数値2つごとに、同値か否か判断をして下さい。同値である場合、その値を1つ右側に運んで下さい。同値でない場合は、捨てちゃってください。コメント機能が使えるようになりました。コマンドの合間にコメント機能でメモをつけて考えを整理しましょう。
2)解説
2枚のパネルの値が同じであるかどうかを判定する方法を考えます. 11年目でSUBコマンドの使い方を学びました. 2枚のパネルで引き算をして結果が0であれば, 持っているパネルとカーペットのパネルが同じ, と言えます.
SUBコマンドを使うためには, パネルをカーペットに置く必要がありますので, 2枚のパネルが同値かどうかを判定する手順は次のようになります.
- 1枚目のパネルを取りだし, カーペットに置く.
- 2枚目のパネルを取りだし, カーペットに置いたパネルと減算をする.
- 減算の結果が0であれば, カーペットのパネルを取り, 右のコンベアに運ぶ.
- 減算の結果が0でなければ, 最初に戻る.
図は, この手順をコードにした結果です. このコードを実行すると, 課題をクリアーできます.
このコードでサイズ目標は達成できましたが, スピード目標には届きませんでした. コードの最適化については, 記事を改めて解説します.
0 件のコメント:
コメントを投稿