サヤちゃんは、あることに気が付きました。
ねえねえ、見てほしいものがあるんだけど。
まず、これは に変換できる弁当箱だよね。
うん、そうだけど、それがどうしたの?
これを、前回サヤが考えた「1を足す機能 」を再現できる弁当箱と合体させて、実行するとどうなると思う?
そりゃあ、 を計算できるんだから、 に変換できる弁当箱になるに決まっているだろう?
じゃあ、実行 してみてよ!
それでは、実行 を押してみてください。最後までスキップすることも可能です。
実行を終えたので、 計算箱に変換 したいところですが…
残念ながら、この弁当箱はぼくが計算箱に変換することができません。
理由は、以下の法則に沿っていないからです。
右上には の料理が「ひとつだけ」ある必要があります。しかし、ここでは の料理がふたつもあるので、計算箱に変換できないのです。
お、おかしい…なんで に変換できる弁当箱にならないんだ?前回はちゃんとできていたのに…
では、ここでネタばらしをしましょう。
まず、先ほどの失敗した弁当箱に 上 左 中 右 の印をつけてみます。
ここで、上 と 中 の両方に、サンドイッチ があるのに注目してみてください。
実は、このように 上 と 中 に同じ料理があると、実行結果が狂ってしまうのです。
実行結果が狂ってしまうから、 を計算できない、ということになります。
へー、そうなんだ!どうして結果が狂うの?
この例だと複雑すぎて説明が難しいので、簡単な例を使って説明しますね!
では、簡単な例で説明します。次のふたつの例をご覧ください。
それぞれを進めてみますね。
左側は、下のふたつの料理が違うけど、右側は下のふたつの料理が同じになった!
そうなんです。このまま最後まで実行すると、
最初と最後だけをピックアップすると、以下のようになります。
というわけで、上 と 中 に同じ料理がない場合とある場合で、最終的な結果が狂ってくることがお分かりいただけたでしょうか。
では、先ほど を計算できなかった弁当箱に話を戻しましょう。
上 と 中 の両方にサンドイッチ があるので、結果が狂うのですね。
じゃあ、どうすればいいんだろう?
上 と 中 のどちらかのサンドイッチ を別の料理に変えれば、上手くいくというわけだよね。
じゃあ…ミニオンさんお願い!特別ルールを設けてくれないかな?
どういうことですか?
「弁当箱のパズル 」に、「上 と 中 に同じ料理が登場したら、どちらかを別な料理に変える」という特別ルールを設けてほしいんだ。
分かりました、いいですよ!
やったー、ありがとう!
え、そんなに簡単にルールを改変してくれるの…?
それでは、
という特別ルールを設けましょう。
つまり、先ほどのように サンドイッチ が 上 と 中 両方に登場した場合…
上 の サンドイッチ が自動的に別の料理に変わります。
じゃあ、何の料理に変わるの?
これは、まだ使われていない料理にランダムに変わります。ここでは、フライドポテト になります。
これで、上 と 中 が被らなくなった!
では、最後まで進めてみましょう。実行 を押してみてください:
やった!無事、 に変換できる弁当箱になった!
ということは、 を計算できたということだね!
その通りです。では、そろそろ今回のまとめに入りましょう!
前回サヤちゃんが考えた「1を足す機能 」を再現できる弁当箱は、
次の に変換できる弁当箱と合体させた場合、
上 と 中 に同じ料理があり、そのままだと結果が狂ってしまいます。
しかし、今回から新たに以下の特別ルールが適用されます:
これにより、正しく を計算できるようになります。
うーん、理解はできたけど、この特別ルールは忘れてしまいそうだなあ…
ご心配なく!この特別ルールは次のページ以降で登場する弁当箱でも使われますが、暗記する必要はありません。実行中に自動で行われますから。
なんとなく「こういう法則があるんだな」と思ってくだされば大丈夫です!
いろいろあったけど、これで、 「1を足す機能 」 を再現できる弁当箱は完璧にマスターしたぞ!
悪魔よ、約束通り計算箱は返してもらう!
うぐぐ…
果たして、村人たちは計算箱を取り戻せたのでしょうか?次のページで確かめてみましょう!
お願い:「長いのでひと休みしよう」とお考えの方にお願いがあります。
差し支えなければ、このページを閉じる前に下のツイートをリツイートしてくださると、宣伝になるので非常に助かります。もしくは、「中級その4までは読み終えた」と引用リツイートしてくださると、さらに励みになります。図々しいお願いで恐縮です。
また、本稿の内容について質問がございましたら、上のツイートにスクリーンショット付きで返信してくだされば最優先で対応します。メール(shu.chibicode@gmail.com)でもお答えできますが、返事が遅れる可能性が高いです。
著者: 上杉周作 (ブログはこちら)
公開日:
ソースコード: GitHubで公開中
英語版: 英語版はこちら