上級その1
こんにちは!このページは「コンピュータサイエンスと魔法のYコンビネータ」という記事の13ページ目です。1ページ目から読むにはこちらからどうぞ。

コンピュータサイエンスと
魔法のYコンビネータ

上級その2: 条件分岐の再現

スライド 1 / 9

条件分岐の再現

村人たちは与えられたアドバイスをもとに、「条件分岐の機能 」を弁当箱で再現しようとしていました。

「条件分岐の機能 」を…
弁当箱で再現できる?

復習すると、上の計算箱は、もし が なら真ん中の が残り…

が なら…
に入っている が残る

そして、もし が 以外の数字なら、上の が残るんだよな。

が 以外なら…
に入っている が残る

これを弁当箱で再現するには、どうすればいいんだろう…?

他のページをお探しですか?

上級その1·
·上級その3
スライド 2 / 9

サヤちゃんの案

するといつものように、サヤちゃんが何かひらめいたようです。

サヤもちょっと考えてみた!これを見てくれる?

「条件分岐の機能 」を…
弁当箱で再現してみた!
4
に変換できる弁当箱
3
に変換できる弁当箱
2
1
に変換できる弁当箱
1234

なんと!じゃあ、これが本当に再現できてるか、確かめてみよう!

スライド 3 / 9

に を入れた場合

では、まずサヤの弁当箱の一番下の「 に変換できる弁当箱」のところに、「 に変換できる弁当箱」を入れてみるね。

一番下の 「 に変換できる弁当箱」
のところに…
4
に変換できる弁当箱
3
に変換できる弁当箱
2
1
に変換できる弁当箱
1234
に変換できる
弁当箱を入れてみる
4
に変換できる弁当箱
3
に変換できる弁当箱
2
1
に変換できる弁当箱
1234

使うのは、こちらの に変換できる弁当箱です!

右下には がついた が「0個」
→ 計算箱に変換すると になる

入れてみると次のようになるよ。実行 を押してみて!

「 に変換できる弁当箱」のところに、
に変換できる弁当箱を入れてみた
(一番下の黄色の部分)
4
に変換できる弁当箱
3
に変換できる弁当箱
2
1
1234

に変換できる弁当箱が残った!

に変換できる弁当箱

うん、これって「条件分岐の機能 」を使ったときと同じだよね?

「条件分岐の機能 」を使った場合:

に を入れた場合…
に入っている が残る

サヤの弁当箱を使った場合:

一番下に に変換できる
弁当箱を入れた場合…
4
に変換できる弁当箱
3
に変換できる弁当箱
2
1
に変換できる弁当箱
1234
が残る
に変換できる弁当箱

たしかに、両方とも を入れると が残るね!

スライド 4 / 9

に を入れた場合

次は、サヤの弁当箱の一番下の「 に変換できる弁当箱」のところに、「 に変換できる弁当箱」を入れてみるね。

一番下の 「 に変換できる弁当箱」
のところに…
4
に変換できる弁当箱
3
に変換できる弁当箱
2
1
に変換できる弁当箱
1234
に変換できる
弁当箱を入れてみる
4
に変換できる弁当箱
3
に変換できる弁当箱
2
1
に変換できる弁当箱
1234

使うのは、こちらの に変換できる弁当箱です!

右下には がついた が「1個」
→ 計算箱に変換すると になる
1
1

入れてみると次のようになるよ。実行 を押してみて!

「 に変換できる弁当箱」のところに、
に変換できる弁当箱を入れてみた
(一番下の黄色の部分)
4
に変換できる弁当箱
3
に変換できる弁当箱
2
1
1234
1
1

おお、今度は先ほどと逆に、 に変換できる弁当箱が残った!

に変換できる弁当箱

これも、「条件分岐の機能 」を使ったときと同じだよね?

「条件分岐の機能 」を使った場合:

に を入れた場合…
に入っている が残る

サヤの弁当箱を使った場合:

一番下に に変換できる
弁当箱を入れた場合…
4
に変換できる弁当箱
3
に変換できる弁当箱
2
1
に変換できる弁当箱
1234
が残る
に変換できる弁当箱

たしかに、両方とも を入れると が残るね!

スライド 5 / 9

やっぱりサヤちゃんが正解?

とういうことは、やっぱりサヤちゃんの弁当箱が、「条件分岐の機能 」の再現としては正解なのかな?

「条件分岐の機能 」を…
サヤちゃんが弁当箱で再現してみた!
果たして、これが正解なのか?
4
に変換できる弁当箱
3
に変換できる弁当箱
2
1
に変換できる弁当箱
1234

念のため、最終チェックをしたほうがいいかも!

最終チェックだって?

スライド 6 / 9

全てを埋める

いちおう最終チェックとして、

  • の全てを埋めてみて、
  • それをサヤの弁当箱でも再現できるかやってみるよ!

ん?どういうこと?

たとえば、

  • 条件分岐の機能がある計算箱の に、
  • それぞれ を入れた場合…
  • 最終的に が残るよね。
の部分に、
を入れた場合、
が なので…
に入っていた が残る

では、サヤの弁当箱の にも を入れてみるよ。

これを実行 したとき、先ほど同じく結果が になれば成功 というわけだよね。

サヤの弁当箱の…
4
に変換できる弁当箱
3
に変換できる弁当箱
2
1
に変換できる弁当箱
1234
に を、
に を、
に を入れてみた
4
に変換できる弁当箱
3
に変換できる弁当箱
2
1
に変換できる弁当箱
1234
に変換できる弁当箱
になれば成功

なるほど。これを実行して に変換できる弁当箱になれば…

サヤちゃんの弁当箱が条件分岐の機能を再現できていると見て間違いないな。

スライド 7 / 9

では確かめてみよう!

では、 にそれぞれ変換できる弁当箱を入れてみたよ。(黄色の部分)

に を、
に を、
に を入れてみた
4
に変換できる弁当箱
3
に変換できる弁当箱
2
1
に変換できる弁当箱
1234
にそれぞれ変換できる
弁当箱を入れてみた
4
12
2
1
3
1
1
2
1
1234

というわけで、実行 を押してみて!

4
12
2
1
3
1
1
2
1
1234

最終的に残ったこちらの弁当箱は、 に変換できる弁当箱だね。

右下には がついた が「1個」
→ 計算箱に変換すると になる
1
1

だから、 が残ったので、成功 だよ!

やったー、さすがサヤちゃん!

すごい!まとめると、下のようになります!

「条件分岐の機能 」を使った場合:

結果は になる

サヤの弁当箱を使った場合:

4
に変換できる弁当箱
3
に変換できる弁当箱
2
1
に変換できる弁当箱
1234
結果は になる
に変換できる弁当箱
スライド 8 / 9

まとめ

お見事!サヤちゃん、正解です!

サヤちゃんの弁当箱は、「条件分岐の機能 」を再現しています!

「条件分岐の機能 」は…
サヤちゃんの弁当箱で
再現できている!
4
に変換できる弁当箱
3
に変換できる弁当箱
2
1
に変換できる弁当箱
1234

やったー!

まとめると、計算箱の「条件分岐の機能 」も、弁当箱で再現することができるのです。このポイントさえ覚えていただければ、細かいことは分からなくても大丈夫です!

計算箱の「条件分岐の機能 」も、
弁当箱で「再現」することができる

ちなみに: 「条件分岐の機能 」を再現できる弁当箱は、 サヤちゃんが考えた弁当箱以外にもあります。つまり、正解は他にもあるのです。

気になる方は、↓の「続きを読む」を押してみてください。 (読まなくても先に進めます!)

スライド 9 / 9

繰り返しの機能は?

うーん、条件分岐の機能を再現できたのはいいとして…

俺らがやりたいのは、「繰り返しの機能 」を弁当箱で再現することなんだけど…

を 回
繰り返す
弁当箱で再現
を 回
繰り返す
弁当箱で再現

そうですね。しかし、上級その1でぼくが言ったことを思い出して下さい。

「条件分岐の機能 」は、「繰り返しの機能 」と関連があるのです。

「条件分岐の機能 」は、
「繰り返しの機能 」と関連がある

だから、先ほど「条件分岐の機能 」を弁当箱で再現したことによって、

みなさんは「繰り返しの機能 」を弁当箱で再現するのに大きく近づいたのです。

「条件分岐の機能 」を
弁当箱で再現したことにより…
「繰り返しの機能 」を
弁当箱で再現するのに大きく近づいた!

うーん…そう言われても、どういうことやらさっぱり…

では、次のページでまたヒントを出しましょう!

というわけで、先に進んでみてください。

次のページへ進む上級その3へ
上級は残り3ページです!

ひと休みする前に

お願い:「長いのでひと休みしよう」とお考えの方にお願いがあります。

差し支えなければ、このページを閉じる前に下のツイートをリツイートしてくださると、宣伝になるので非常に助かります。もしくは、「上級その2までは読み終えた」と引用リツイートしてくださると、さらに励みになります。図々しいお願いで恐縮です。

また、本稿の内容について質問がございましたら、上のツイートにスクリーンショット付きで返信してくだされば最優先で対応します。メール(shu@chibicode.com)でもお答えできますが、返事が遅れる可能性が高いです。

次のページへ進む上級その3へ
上級は残り3ページです!

著者: 上杉周作 (ブログはこちら)
公開日:
ソースコード: GitHubで公開中
英語版: 英語版はこちら

上級その1
プライバシーポリシー · 当サイトについて · Twemoji