じゃあ説明しよう。まず、下のふたつの料理を比べてみる。
もし下のふたつの料理が同じなら、実行 したときに上にある料理が残るんだ。
そして、以下が クイズの1問目の答えだ。
次に、下のふたつの料理が異なる場合。
この場合は、実行 したときに右下にある料理が残るんだ。
そして、以下が クイズの2問目の答えだ。
どうだ、これが正解だろう!
正解、まさにその通りだ!
今まで勉強を怠けてきたわりには、なかなかやるじゃないか。
やった!やった!
だが、喜ぶのはまだ早い。
えー、なんで?
次に進む前に、「弁当箱のパズル 」の法則を明確にする必要があるからな。
法則を明確にする?どういうこと?
先ほどお前が言った、「下のふたつの料理を比べて、同じなら上が残る。違うなら右下が残る」というのは明確さに欠ける。
これから先に登場するさらに複雑なパズルを解くには、法則としては不十分なんだ。
えー、そうなのか…
さらに複雑なパズルを解くには、もっと法則をハッキリさせる、すなわち明確化する必要があるんだ。
というわけで、これから「弁当箱のパズル 」の明確な法則を紹介する。それを理解した上で、さらに複雑なパズルを解いてもらおう。
うーん、よくわからないけど、とりあえずその明確な法則とやらを聞いてみよう。
では、「弁当箱のパズル 」の明確な法則をまとめてみよう。全部で4つのステップがあるぞ。
1. 印をつける: 上 左 右
2. 一致チェック: 左 右
3. コピーする: 上 右
4. 消す: 上 左
では、それぞれのステップについて解説していくぞ。
それぞれのステップについて、 こちらの「弁当箱のパズル 」を使って説明していきます。
まず、上の料理には 上、左の料理には 左、右の料理には 右 の印をつけます。
次へ を押してみてください:
サンドイッチ に 上 の印が、下のお寿司 ふたつにそれぞれ 左 と 右 の印がついた!
続いて、左 と 右 が一致するかチェックし、一致した料理には、 を付けます。
次へ を押してみてください:
左 と 右 のお寿司 に がついた!
続いて、上 の料理を、一致した 右 の部分にコピーします。
次へ を押してみてください:
上のサンドイッチ が右の部分にコピーされた!
最後に、上 と 左 が消えます。
次へ を押してみてください:
上 と 左 が になった!
そして、最終的にサンドイッチ だけになります。次へ を押してみてください:
以上です!
では、たとえば下の例のように、上にふたつの料理がある場合はどうなるんだろう?
この場合、上にあるスパゲッティ とパン には両方とも 上 の印がつきます。
そして、ピザ が一致したあとに…
スパゲッティ とパン が両方ともコピーされます。
最後に、上 と 左 が消え…
スパゲッティ と パン が残るのです。
では、最初から最後まで全てのステップを見てみましょう。こちらの「全ステップを表示」できるボタンを使って実行 すると、各ステップを自動で見ることができます。
このボタンを使うと…
こちらは、上にひとつの料理がある例です。実行 を押してみてください。手動で進める場合は、 を押してください。
こちらは、上にふたつの料理がある例です。実行 を押してみてください:
というわけで、ここまでをまとめてみましょう。
1. 印をつける: 上 左 右
2. 一致チェック: 左 右
3. コピーする: 上 右
4. 消す: 上 左
なるほど、そういう仕組みになっていたのか!
うむ。そして、こうやってルールを明確にすれば、パズルが複雑になっても応用が効くんだ。
では、もし 左 と 右 が一致しなかったらどうするの?
たとえば下の弁当箱の場合は、左 と 右 が一致しないよね。
次へ を押してみてください:
左 と 右 が一致しない場合は、コピーはせずに、ただ 上 と 左 を消します。
次へ を押してみてください:
この場合は、最終的にチキン だけになります。次へ を押してみてください:
復習のために、左 と 右 が一致しなかった場合も、最初から最後まで全てのステップを見てみましょう。
こちらは、上にひとつの料理がある例です。実行 を押してみてください。手動で進める場合は、 を押してください。
こちらは、上にふたつの料理がある例です。実行 を押してみてください:
左 と 右 が一致しなかった場合、コピーはせずに、ただ 上 と 左 を消す。
以上が、「弁当箱のパズル 」の明確な法則だ。理解できたかな?
な、なんとか…でも、まだ覚えきれてないなあ。
法則を覚えきれていなくても、次回また復習するので大丈夫だ。
ホッ、よかった… (悪魔って意外と優しいんじゃ?)
次回では、もっと複雑なパズルを出題する。計算箱を返してほしかったら、解いてみせるんだな!
望むところだ!
お願い:「長いのでひと休みしよう」とお考えの方にお願いがあります。
差し支えなければ、このページを閉じる前に下のツイートをリツイートしてくださると、宣伝になるので非常に助かります。もしくは、「初級その4までは読み終えた」と引用リツイートしてくださると、さらに励みになります。図々しいお願いで恐縮です。
また、本稿の内容について質問がございましたら、上のツイートにスクリーンショット付きで返信してくだされば最優先で対応します。メール(shu@chibicode.com)でもお答えできますが、返事が遅れる可能性が高いです。
著者: 上杉周作 (ブログはこちら)
公開日:
ソースコード: GitHubで公開中
英語版: 英語版はこちら