では、これから「繰り返しの機能 」を弁当箱で再現するのに役立つヒントを出していきますね。
まずは、こちらの弁当箱をご覧ください。
めちゃくちゃ複雑な弁当箱だなあ…
ここで質問です。上の弁当箱を実行 すると、どんな結果になるでしょう?
そんなの、すぐ答えられるわけないだろう!こんな複雑な弁当箱の実行結果なんて、見当がつかないよ!
サヤはすぐ分かったよ! に変換できる弁当箱になるんじゃない?
まさにその通り!サヤちゃん、正解です!
へ?なんでそんな早く正解が分かるの…?
サヤちゃん、まさか一瞬で頭の中で実行 したのかい?
ううん、そんなことはしていないよ。じゃあ、どうやって解いたかを教えてあげるね!
まず、一番上の部分に注目してみて!
あ、一番上の部分をよく見ると、これは に変換できる弁当箱だ!
そう!だから、とりあえずこれを に置き換えてみるね。
次は、右の真ん中の部分に注目してみて!
右の真ん中の部分をよく見ると、これは に変換できる弁当箱だ!
そう!だから、これを に置き換えてみるね。
なるほど…!
次に、この右の黄色の部分に注目してみて!
これはもしかして…中級その3で サヤちゃんが考えた、 「1を足す機能 」 を再現できる弁当箱かな?
その通り!だから、この部分をいったん に置き換えるね。
なるほど、だいぶシンプルになってきたぞ…
最後に、右下の全ての部分に注目してみて!
そういればこれは、前回やった「条件分岐の機能 」に変換できる弁当箱と同じだ!
そう!だから、右下の部分を「条件分岐の機能 」に置き換えるんだ。
以下のように置き換えてみるよ。
置き換えるとこうなります!
なんと、超シンプルになった!
あとは、これを実行 するだけだよ。というわけで、実行 を押してみて!
ここまできたら、後は簡単だよね。 が だから、 に入っている が残るんだ。
実行 を押してみて!
ほらね、サヤがさっき言ったように、最後に が残ったでしょう?
たしかに…!
しかし…サヤちゃんがとった手法はズルなんじゃないか?
サヤちゃんは、もともとの弁当箱を、それぞれの要素に対応する計算箱に置き換えてから実行したけど…
もともとの弁当箱を、そのまま実行 しても、結果は同じく になっていたのかな?
では、確かめてみましょう!
では、もともとの弁当箱を実行 してみましょう!
最後に残った以下の弁当箱は、 に変換できる弁当箱ですね。
サヤちゃんのやり方でやったときと、結果が同じになった!
ということは、サヤちゃんのやり方は間違ってなかったのか…
そういうことですね!
ここで一旦立ち止まって振り返ってみましょう。
さきほどサヤちゃんがやったのは、「弁当箱の一部分を、同じ効果がある計算箱と置き換える」という手法でした。図で説明すると、以下のような感じですね。
重要なのは、このように弁当箱の一部分を計算箱と置き換えても、実行したら結果は同じになるということです。
たしかに先ほどの場合は、サヤちゃんの手法を使っても、そのまま実行しても、どちらも結果は になったな。
はい。複雑な弁当箱は、それぞれの部分をシンプルな計算箱に置き換えると分かりやすくなります。
結果は変わらないのだから、積極的に置き換えていくべきということですね。
でもさあ…質問なんだけど、この話って、「繰り返しの機能 」と何の関係があるの?
すると、サヤちゃんが何かに気づいたようです。
ねえねえ、もしかしたらサヤ、「繰り返しの機能 」を弁当箱で再現できたかもしれない!
え!サヤちゃん、本当かい?
うん、それでは説明するね!
まず、この「繰り返しの機能 」がある計算箱を見てみて!
この計算箱は、以下のように を3回繰り返すことにより、 を計算できるわけだよね。
これを弁当箱で再現する方法が分かったんだ!
なんと!ぜひ教えてくれ!
先ほど登場した、複雑な部分を計算箱に置き換えた弁当箱に注目してみて!
これに変更を加えることで、「繰り返しの機能 」を再現してみるよ。
この弁当箱に、以下のようにいろいろ追加してみたの。黄色の部分が追加した部分だよ。
ふむふむ…何やら複雑になったなあ。
で、これがどうしたっていうの?
実は、上の弁当箱を実行すると、先ほどの「繰り返しの機能 」がある計算箱と全く同じように変化するんだ。
つまり、以下のようになるんだよ。
えー、まさか!本当なのかい?
もし本当だとしたら…これで「繰り返しの機能 」を再現できるということになるけど…
でも、サヤちゃんが言っていることは正しいのだろうか?
実行して確かめてみないと分からないなあ…
うん、では次のページで実行して確かめてみよう!