上級その4

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

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

上級その5: 足し算と掛け算、そして…

スライド 1 / 12

勝利!

では約束通り、「繰り返しの機能 」を返してやろう!

繰り返しの機能を返してもらった!

やった!これで、計算箱のすべての機能を返してもらったぞ!悪魔に勝った!

計算箱のすべての機能を返してもらった!

これで、以前と同じように、計算箱を使って日々の計算を行うことができる!

難しい足し算や引き算でも、計算箱があればへっちゃらだ!

を計算
を計算

それについてなんだが…ちょっと伝えたいことがある。聞いてもらえるか?

ん…なんだ?まだ何か言いたいことがあるのか?

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

上級その4·
·エピローグ
スライド 2 / 12

この弁当箱は…?

まず、こちらの弁当箱を見てみな。

2
に変換できる弁当箱
1
に変換できる弁当箱
12
24
3
34
1
12

なんだ、この弁当箱は?

上のほうに、 を入れる部分があるけれど…

とりあえず、 に適当な数字を当てはめてみな!

分かった。じゃあ、こちらの に変換できる弁当箱と…

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

こちらの に変換できる弁当箱を…

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

の部分に入れてみよう。

の部分に…
2
に変換できる弁当箱
1
に変換できる弁当箱
12
24
3
34
1
12
に変換できる
弁当箱を入れてみた
2
12
2
1
1
123
3
2
1
12
24
3
34
1
12

では、これを実行 するとどうなるか確かめてみよう!

スライド 3 / 12

早送りしてみると…

では、早送り を押してみてください

  • 複雑なので、目で追わなくても大丈夫です!
  • ちょっと時間がかかるので、待てない方は下の「最後までスキップ」を押してください!
2
12
2
1
1
123
3
2
1
12
24
3
34
1
12

結果は… に変換できる弁当箱になった!

右下には がついた が「5
→ 計算箱に変換すると になる
12345
5
4
3
2
1
スライド 4 / 12

足し算ができる

では、もともと に入れた数字は何だったかな?

もともと入れたのは だった。そして、結果は になった…

を入れると…
2
に変換できる弁当箱
1
に変換できる弁当箱
12
24
3
34
1
12
に変換できる弁当箱に
に変換できる弁当箱

ということはもしかして…足し算を計算したのか?

その通りだ!先ほどの弁当箱は、

  • に数字を入れ、
  • 実行してから 計算箱に変換 すると…
  • 結果は になるんだ。
に数字を入れ、
実行してから 計算箱に変換
すると…
2
に変換できる弁当箱
1
に変換できる弁当箱
12
24
3
34
1
12
結果は になる

つまり、足し算ができる弁当箱というわけだな。

なんてこった…

前回、俺らは を計算するのに、以下のように「繰り返しの機能 」を再現できる弁当箱を使っていたが…

を計算
2
1
1234
4
3
2
1
12
1
12
2
1
1
12
2
1

こんな複雑なことをしなくても、弁当箱で足し算をすることができるというわけか。

まさに、その通りだ!

スライド 5 / 12

もうひとつの弁当箱

では、こちらの弁当箱は何ができる弁当箱か分かるかな?

2
に変換できる弁当箱
1
に変換できる弁当箱
12
3
12
2
13

先ほどの弁当箱と似ているけど、微妙に違うなあ…

前回同様、 に変換できる弁当箱を に入れて、早送り してみよう。

ちなみに、今回はかなり時間がかかるので、待てない場合は「最後までスキップ」を押してもいいぞ。

に変換できる
弁当箱を入れてみた
2
12
2
1
1
123
3
2
1
12
3
12
2
13

結果は… に変換できる弁当箱になった!

右下には がついた が「6
→ 計算箱に変換すると になる
123456
6
5
4
3
2
1
スライド 6 / 12

掛け算ができる

今回は、もともと に入れたのは だった。そして、結果は になった…

を入れると…
2
に変換できる弁当箱
1
に変換できる弁当箱
12
3
12
2
13
に変換できる弁当箱に
に変換できる弁当箱

これはもしかして…掛け算を計算できるのか?

掛け算ができる?

その通りだ!先ほどの弁当箱は、

  • に数字を入れ、
  • 実行してから 計算箱に変換 すると…
  • 結果は になるんだ。
に数字を入れ、
実行してから 計算箱に変換
すると…
2
に変換できる弁当箱
1
に変換できる弁当箱
12
3
12
2
13
結果は になる

つまり、掛け算ができる弁当箱というわけだな。

掛け算ができる弁当箱が存在した!
スライド 7 / 12

四則演算ができる

すごい…!計算箱では掛け算ができなかったけど、弁当箱を使えば掛け算ができるのか!

そうだ。ちなみに今回は紹介する時間がないが、ふたつの数字の引き算や割り算も弁当箱で行うことができるぞ。

つまり、弁当箱は四則演算の全てを行うことができるんだ。

弁当箱は四則演算の全てができる
スライド 8 / 12

ここからは、雰囲気で読み進めてみてください

ここから先は非常に複雑なので、雰囲気で読み進めてください!内容を完全に理解する必要はありません。

完全に理解する必要はありません!
スライド 9 / 12

Yコンビネータと組み合わせると

また、前回「繰り返しの機能 」を再現するのに使った「Yコンビネータ」の弁当箱と組み合わせることで、さらに複雑な計算をすることもできる。

前回「繰り返しの機能 」を
再現するのに使った「Yコンビネータ
1
12
2
1
1
12
2
1

どういうこと?

たとえば、「階乗」という計算がある。これは「ある数からはじめて、1を引いていき、 になるまで繰り返し掛け算をする」という計算だ。

たとえば、「 の階乗」は、以下のようになる。実際に計算すると になるぞ。

の階乗。
実際に計算すると になる

同じように、「 の階乗」は、以下のようになる。実際に計算すると になるぞ。

の階乗。
実際に計算すると になる

階段みたいに1ずつ数字が減っていくから「階」乗、と覚えておけばいい。

ふむふむ…

この「階乗」は、先ほどの掛け算ができる弁当箱と、Yコンビネータの弁当箱を組み合わせて計算することができるんだ。


掛け算を計算できる弁当箱と…
2
に変換できる弁当箱
1
に変換できる弁当箱
12
3
12
2
13
Yコンビネータ」の
弁当箱を組み合わせることで…
1
12
2
1
1
12
2
1
階乗を計算することができる!

へー、そうなの!

スライド 10 / 12

掛け算の省略表記

まず、掛け算を計算できる弁当箱を、以下のように 印で省略してみる。こうしたほうがひと目で見て分かりやすいからな。

掛け算を計算できる弁当箱を…
2
に変換できる弁当箱
1
に変換できる弁当箱
12
3
12
2
13
印で省略してみる
2
に変換できる弁当箱
1
に変換できる弁当箱
12

印を使うことで、見た目がシンプルになった!

スライド 11 / 12

階乗の計算

それでは、階乗を計算する弁当箱をお見せしよう。

こちらの弁当箱は、黄色の部分に、先ほど紹介した掛け算の弁当箱(印)と、Yコンビネータの弁当箱が入っている

この弁当箱を実行すると、 の階乗、すなわち を計算してくれるんだ。

掛け算ができる弁当箱(印)と
Yコンビネータの弁当箱を使うことで…
2
1
1345
5
4
2
23
1
12
1
12
2
1
1
12
2
1
の階乗、すなわち
を計算できる!

へー、すごい!

前のページで登場した弁当箱と、右上の部分が微妙に違うのが分かるかな?

前回の弁当箱
( を計算)
の右上部分:
1234
4
3
2
1
今回の弁当箱
(階乗を計算)
の右上部分:
1345
5
4
2
23