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

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

初級その4: 弁当箱の法則

スライド 1 / 18

法則が分かった!

分かったぞ!

どうやら、ラムダ村の村人たちは「弁当箱のパズル 」の法則を見抜いたようです!

やった、法則が分かったぞ!

なんと…本当に分かったというなら、説明してみることだな!

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

初級その3·
·初級その5
スライド 2 / 18

下のふたつの料理が同じの場合

じゃあ説明しよう。まず、下のふたつの料理を比べてみる。

もし下のふたつの料理が同じなら、実行 したときに上にある料理が残るんだ。

下の料理が同じ (両方とも お寿司 )
上にあったサンドイッチ が残る

下の料理が同じ (両方とも ピザ )
上にあったスパゲッティ とパン が残る

そして、以下が クイズの1問目の答えだ。

下の料理が同じ (両方ともニンジン )
上にあった ブロッコリー が残る
スライド 3 / 18

下のふたつの料理が異なる場合

次に、下のふたつの料理が異なる場合。

この場合は、実行 したときに右下にある料理が残るんだ。

下の料理が異なる ( と )
右下にあった チキン が残る

下の料理が異なる ( と )
右下にあった ホットドッグ が残る

そして、以下が クイズの2問目の答えだ。

下の料理が異なる ( と )
右下にあった ナス が残る

どうだ、これが正解だろう!

スライド 4 / 18

正解!

その通り!

正解、まさにその通りだ!

今まで勉強を怠けてきたわりには、なかなかやるじゃないか。

やった!やった!

だが、喜ぶのはまだ早い。

えー、なんで?

次に進む前に、「弁当箱のパズル 」の法則を明確にする必要があるからな。

法則を明確にする?どういうこと?

スライド 5 / 18

法則を明確にする

先ほどお前が言った、「下のふたつの料理を比べて、同じなら上が残る。違うなら右下が残る」というのは明確さに欠ける。

これから先に登場するさらに複雑なパズルを解くには、法則としては不十分なんだ。

えー、そうなのか…

さらに複雑なパズルを解くには、もっと法則をハッキリさせる、すなわち明確化する必要があるんだ。

もっと法則を明確にしないと
複雑なパズルを解けない

というわけで、これから「弁当箱のパズル 」の明確な法則を紹介する。それを理解した上で、さらに複雑なパズルを解いてもらおう。

うーん、よくわからないけど、とりあえずその明確な法則とやらを聞いてみよう。

スライド 6 / 18

「弁当箱のパズル 」の明確な法則

では、「弁当箱のパズル 」の明確な法則をまとめてみよう。全部で4つのステップがあるぞ。

1. 印をつける: 上 左 右

印をつける: 上 左 右
上左右

2. 一致チェック: 左 右

一致チェック: 左 右
上左右

3. コピーする: 上 右

コピーする: 上 右
上左右

4. 消す: 上 左

消す: 上 左
上左

では、それぞれのステップについて解説していくぞ。

スライド 7 / 18

1. 印をつける 上 左 右

それぞれのステップについて、 こちらの「弁当箱のパズル 」を使って説明していきます。

まず、上の料理には 上、左の料理には 左、右の料理には 右 の印をつけます。

上左右
上 左 右 の印をつける

次へ を押してみてください:

サンドイッチ に 上 の印が、下のお寿司 ふたつにそれぞれ 左 と 右 の印がついた!

スライド 8 / 18

2. 一致チェック 左 右

続いて、左 と 右 が一致するかチェックし、一致した料理には、 を付けます。

左右
左 右 が一致したら をつける

次へ を押してみてください:

上左右

左 と 右 のお寿司 に がついた!

スライド 9 / 18

3. コピーする: 上 右

続いて、上 の料理を、一致した 右 の部分にコピーします。

上右
上 を一致した 右 にコピー

次へ を押してみてください:

上左右

上のサンドイッチ が右の部分にコピーされた!

スライド 10 / 18

4. 消す: 上 左

最後に、上 と 左 が消えます。

上左
上 と 左 が消える

次へ を押してみてください:

上左右

上 と 左 が になった!

そして、最終的にサンドイッチ だけになります。次へ を押してみてください:

上左

以上です!

スライド 11 / 18

上にふたつの料理がある場合

では、たとえば下の例のように、上にふたつの料理がある場合はどうなるんだろう?

上にふたつの料理がある
(スパゲッティ とパン )

この場合、上にあるスパゲッティ とパン には両方とも 上 の印がつきます。

両方とも 上 の印がつく
上上左右

そして、ピザ が一致したあとに…

左 と 右 に一致 する料理があります
上上左右

スパゲッティ とパン が両方ともコピーされます。

上 を一致した 右 の部分にコピー
上上左右右

最後に、上 と 左 が消え…

上 と 左 が消えます
上上左

スパゲッティ と パン が残るのです。

スライド 12 / 18

全てのステップを見てみましょう

では、最初から最後まで全てのステップを見てみましょう。こちらの「全ステップを表示」できるボタンを使って実行 すると、各ステップを自動で見ることができます。

このボタンを使うと…

各ステップを自動で見ることができる

こちらは、上にひとつの料理がある例です。実行 を押してみてください。手動で進める場合は、 を押してください。

こちらは、上にふたつの料理がある例です。実行 を押してみてください:

スライド 13 / 18

まとめ

というわけで、ここまでをまとめてみましょう。

1. 印をつける: 上 左 右

印をつける: 上 左 右
上左右

2. 一致チェック: 左 右

一致チェック: 左 右
上左右

3. コピーする: 上 右

コピーする: 上 右
上左右

4. 消す: 上 左

消す: 上 左
上左

なるほど、そういう仕組みになっていたのか!

うむ。そして、こうやってルールを明確にすれば、パズルが複雑になっても応用が効くんだ。

スライド 14 / 18

一致しなかったら?

左右
左 と 右 が一致しなかったら?

では、もし 左 と 右 が一致しなかったらどうするの?

たとえば下の弁当箱の場合は、左 と 右 が一致しないよね。

次へ を押してみてください:

上左右
スライド 15 / 18

コピーはせず、上 と 左 を消すだけ

左 と 右 が一致しない場合は、コピーはせずに、ただ 上 と 左 を消します。

次へ を押してみてください:

上左右

この場合は、最終的にチキン だけになります。次へ を押してみてください:

上左
スライド 16 / 18

全てのステップを見てみましょう

復習のために、左 と 右 が一致しなかった場合も、最初から最後まで全てのステップを見てみましょう。

全ステップを見てみましょう!

こちらは、上にひとつの料理がある例です。実行 を押してみてください。手動で進める場合は、 を押してください。

こちらは、上にふたつの料理がある例です。実行 を押してみてください:

スライド 17 / 18

まとめ: 一致しなかった場合

左 と 右 が一致しなかった場合、コピーはせずに、ただ 上 と 左 を消す。

左 と 右 が一致しなかった場合…
上左右
コピーはせずに、ただ 上 と左 を消す
上左
スライド 18 / 18

以上です!

以上が、「弁当箱のパズル 」の明確な法則だ。理解できたかな?

な、なんとか…でも、まだ覚えきれてないなあ。

法則を覚えきれていなくても、次回また復習するので大丈夫だ。

ホッ、よかった… (悪魔って意外と優しいんじゃ?)

次回では、もっと複雑なパズルを出題する。計算箱を返してほしかったら、解いてみせるんだな!

望むところだ!

次のページへ進む初級その5へ
初級は残り1ページです!

ひと休みする前に

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

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

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

次のページへ進む初級その5へ
初級は残り1ページです!

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

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