中級その4

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

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

中級その5: 1を引く効果

スライド 1 / 9

返してもらった計算箱は…

では、計算箱を返してやろう!

返してもらった計算箱

あれ…これだけか?

これは「1を足す機能 」がある計算箱だけど…

1を引く機能 」がある計算箱や、「繰り返しの機能 」がある計算箱はどこにいったんだ?

1を引く機能
繰り返しの機能

それらは、まだ返すわけにはいかないな。

いまお前たちに返せるのは、「1を足す機能 」がある計算箱だけだ。

な、なんだってー!

話が違うじゃないか!さっきの問題を解いたら、計算箱を返してくれると言っただろう?

計算箱を返すとは言ったが…計算箱のすべての機能を返すとは言っていないからな!

そ、そんなー!嘘つきじゃないか!

まあ、わたしは悪魔だからな。

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

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

どうすればいい?

じゃあ、どうしたらすべての機能を返してもらえるんだ?

そうだな…先ほどの問題ではお前たちに、計算箱の「1を足す機能 」を弁当箱で再現してもらったよな。

の計算箱を…
弁当箱で再現した
1
1
1
1
13
2
23
1

だから、1を引く機能 」や「繰り返しの機能 」を返してほしかったら、それらを同じように弁当箱で再現してみることだな!

1を引く機能
弁当箱で再現
繰り返しの機能
弁当箱で再現

えー!

1を足す機能 」を再現するのにも苦戦したのに、「1を引く機能 」や「繰り返しの機能 」を再現するなんて、できっこないよ!

だったら諦めることだな。

で、でも…「1を引く機能 」や「繰り返しの機能 」がないと、引き算や、大きな数の足し算・引き算ができないよ!

俺らは計算箱がないと何もできないんだ!

頑張って弁当箱で再現するしかないのか…

スライド 3 / 9

1を引く効果 がある弁当箱のヒント

もちろん、ヒント無しでやれとは言わん。前回同様、ヒントを出してやろうじゃないか。

ミニオン、ヒントを説明したまえ!

わかりました。こちらの弁当箱をご覧ください。

前回と同じく、それぞれの には何らかの料理が入ります。

それぞれの には
何らかの料理が入る
3
2
1
12
2
1
123

なんか、めちゃくちゃ複雑な弁当箱だな…

そして、それぞれの に、ある法則に基づいて料理を入れると、1を引く効果 がある弁当箱になります。

それぞれの に、
ある法則に基づいて料理を入れると、
1を引く効果 がある弁当箱になる
3
2
1
12
2
1
123

なに、1を引く効果 だって?

前回の1を足す効果 の真逆なのかな?

その通りです。上の1を引く効果 がある弁当箱を、

  • ある数字 に変換できる弁当箱と合体させ、
  • 実行してから 計算箱に変換 すると、

結果は になるのです。

に変換できる弁当箱と、
1を引く効果 がある弁当箱を合体させ…
1
に変換できる弁当箱
1
3
2
1
12
2
1
123
実行してから 計算箱に変換
すると、結果は になる

つまりこれを使えば、計算箱の「1を引く機能 」を再現できるというわけだな。

計算箱の「1を引く機能 」は…
1を引く効果 がある弁当箱を
使えば、再現できる
1
に変換できる弁当箱
1
3
2
1
12
2
1
123
スライド 4 / 9

サヤちゃんが考えた弁当箱

しかし…こんな複雑な弁当箱の を正しい法則で埋めるなんて…何日かかってもできなさそうだ!

それぞれの には
何らかの料理が入る
3
2
1
12
2
1
123

村人たちが困っていると、またサヤちゃんが何かひらめいたようです。

ねえねえ、サヤも試しにやってみたんだけど…

え…サヤちゃん、まさか答えが分かったというのかい?

とりあえずこれを見てみて!

サヤちゃんの弁当箱
3
2
1
12
2
1
123

ふむふむ…まさか今回も一発で正解なんてことはありえないと思うけど、とりあえず試してみるか。

前回もやったように、 に変換できる弁当箱と合体させてみよう。

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

今回は1を引く効果 があるかどうかを確かめたいわけだから、 が計算できないといけない。

つまり、実行してから 計算箱に変換 した時に、結果が になれば成功というわけだ。

結果が になればOK
に変換できる弁当箱と、
サヤちゃんの弁当箱を合体させ…
1
1
1
1
3
2
1
12
2
1
123
実行してから 計算箱に変換
して、結果が になれば成功
それ以外なら失敗

じゃあ、実行 してみよう!

スライド 5 / 9

実行 してみると…

それでは、 サヤちゃんの弁当箱を実行してみましょう!

途中まで早送りしてみますね。早送り を押してみてください:

1
1
1
1
3
2
1
12
2
1
123

複雑すぎて、目で追うのがしんどい…

すべてを目で追う必要はないですよ!なんとなく、「へー、こんなふうに進んでいくんだ」と思っていただければ大丈夫です。

また、「途中までスキップ」を押して、飛ばしていただいても結構です。

それより見てみて!途中で が同じ ピザ になったよ!

前回と同じように特別ルールで、 が別の料理に変わるんだよね。

特別ルールを実行するには、次へ を押してみてください!

に同じ料理があります
1
1
12
2
1

そうですね!結果が狂わないように、 ピザ お寿司 に変えました。

では、最後まで早送り してみてください!

1
1
12
2
1

最終的に残った以下の弁当箱は、 に変換できる弁当箱です!

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

ということは、サヤちゃんの弁当箱は…

に変換できる弁当箱と合体させ、実行してから 計算箱に変換 すると、結果が になるということですね。

に変換できる弁当箱と、
サヤちゃんの弁当箱を合体させ…
1
1
1
1
3
2
1
12
2
1
123
実行してから 計算箱に変換
すると、結果が になる

つまり、 が計算できたので、成功です!

やったー!

す、すごい…!

スライド 6 / 9

はできる?

ぐぬぬ…しかし、 が計算できたからといって、その弁当箱に1を引く効果 があるとはまだ言い切れないぞ。

たとえば、 は計算できるのかな?

これも計算できる?

じゃあ、 に変換できる弁当箱と合体させてみるね!

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

合体したものを実行してから 計算箱に変換 して、結果が になればいいんだよね。

に変換できる弁当箱と、
サヤちゃんの弁当箱を合体させ…
1
12
2
1
1
3
2
1
12
2
1
123
実行してから 計算箱に変換
して、結果が になれば成功
それ以外なら失敗

まずは実行してみるね。早送り を押してみて

  • 今回は、最後まで止まらずに早送りするね!
  • 複雑なので、目で追わなくても大丈夫だよ!
  • ちょっと時間がかかるので、待てない方は下の「最後までスキップ」を押してね!
1
12
2
1
1
3
2
1
12
2
1
123

最終的に残った以下の弁当箱は、 に変換できる弁当箱です!

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

つまり、 が計算できたので、またしても成功です!

わーい、わーい!

ぐぬぬ…

スライド 7 / 9

1を引く効果 がある法則

まさか、こうも簡単に正解されるとは思わなかったが…

サヤちゃんが考えた弁当箱は、1を引く効果 がある弁当箱だ!

サヤちゃんが考えた弁当箱には
1を引く効果 がある
3
2
1
12
2
1
123

やった!ということは、正解だね!

ちなみに、サヤちゃんが考えた弁当箱以外にも、以下の法則に当てはまる弁当箱であれば、 どれでも1を引く効果 があるぞ。

この法則に当てはまる弁当箱であれば、
1を引く効果 がある
3
2
1
12
2
1
123

たしかにサヤちゃんの弁当箱は、上の法則に当てはまっている…

よくこんなの分かったなあ。サヤちゃんは天才なのかもしれない!

そんなことないよ!でも、これで「1を引く機能 」を再現できたね!

スライド 8 / 9

1を引く機能 」も再現できた!

今回学んだことを一言でまとめると、計算箱の「1を引く機能 」も、弁当箱で「再現」できる、ということです。

計算箱の「1を引く機能 」は、
弁当箱で「再現」することができる

たとえば、以下のような を計算する計算箱をご覧ください。

を計算できる

これを弁当箱で再現するには、 に変換できる弁当箱と、1を引く効果 がある弁当箱を合体すればいいのです。

に変換できる弁当箱と
1を引く効果 がある弁当箱を
合体すれば、 の計算箱を再現できる
1
123
3
2
1
1
3
2
1
12
2
1