空中の杜

旧名「空気を読まない中杜カズサ」。

『「願いごとを増やしてくれ」という願いは成立しない?』解答例としてのフローチャート思考

ちょっと前に書いた「願いごとを増やしてくれ」という願いは成立しない?ですが、コメント、トラバ、ニュースサイトでの紹介などで答えていただきありがとうございます。では今回は、私が考えていた解答というか解答例らしきものを出したいと思います。

さて、これには2つのポイントがあります。それは「この魔神の言い分は正しいか」というものと、「魔神に永久に願いを叶えさせるためにはどうすればいいか」というもの。これを順に説明してゆきたいと思います。


まず、「この魔神の言い分は正しいか」ですが、私は「正しい」と考えます。それは魔神の出した前提には、「終了条件」が明記されていなかったから。
たしかに「願いを一つ叶えれば終了」と言いましたが、この「終了」の条件はかなり曖昧なものです。

ここでC言語あたりでソースを書いて説明しようとしましたが、素で忘れてて愕然としたので(だってもう6年も触ってないし……)、言葉での説明にします。

普通の願い事ならば、『願いを聞く→叶える→終了』となります。しかし今回の場合、トレジャーハンターが望んだのは『願いを聞く(その願いは「願いを無限にする」というもの)→叶える→本来なら終了だけど、無限という願いのためにそれが無効になる→願いを叶える(以下永久ループ)』だったでしょう。

しかし、同じ前提条件でこういう書き方も出来ます『願いを聞く(その願いは「願いを無限にする」というもの)→叶える→終了』とも。……わかりにくいですか? つまり、『願いを聞く(その願いは「願いを無限にする」というもの)→叶える→終了(→本来なら2回目の願いをここで叶えるのだけど、処理が終わっているので無意味)』ってことです。これが魔神の言い分。

つまり、この魔神の願い事というソースは、1回だけ通過するのを前提に書かれており、ループ処理が行われていなかった、と言い切ることができるのです。でもその1回目以上の願い事という処理が実行されていなくても、フローチャートとしては成り立ちます。

要するに、トレジャーハンターは終了する厳密な条件を聞いていなかったので、利はそのフローチャートを制作できる権利のある魔神にあるのです。つまり魔神は前述の言動に矛盾がない限りは終了条件を好きな場所に置けるのに対して、トレジャーハンターにはない、ということです。ですので、終了条件の確認を採っていなかったトレジャーハンターが悪いのではないかと。

もちろん、これを反証するだけの材料がトレジャーハンターに備わっていればそっちが正しいですが、この場合においてはかなり難しいでしょう(パラドックスをどうにかして「叶えていない」という論拠に結びつけないといけないので)。ま、これは対等の関係に見えますが、明らかにこの場合ルールの支配権は魔神にあるので、トレジャーハンターは最初から不利な前提だったと言えます(これが妖精が「逃がしてくれるなら願いを叶える」とかだったら、微妙に違ったかも)。
追記:明日は明日の風が吹くさんでいただきました意見を上手く魔神に言うことが出来れば、ここの突破口があるかも。


では「魔神に永久に願いを叶えさせるためにはどうすればいいか」です。
これは今までの論理をふまえて、魔神にこの願いを終了させないようにすればいいわけです。つまり終了条件に抜ける前に願いというプログラム処理の中で永久ループさせてしまえばいいわけですよね。

そのための願い事の例がコメントや引用でもいただきましたが、発見出来た範囲で上の論理で照らし合わせて出させていただきます(また別の論理で出すと正答とも誤答ともなる場合もあるので、あくまで今回のです)。あと文脈に即して、「魔神は早く帰りたい」というのを前提とします。

>「私が裕福に暮らせるように手伝ってくれ」
これだと、魔神が万能だったと仮定した場合は、おそらくその場で今後裕福に暮らせる魔法をかけて帰る可能性が高いですね。

>「ひとつかなえて帰るのではなく、100の願いをかなえてから帰ってください」
おそらく上のロジックだと「帰る」自体に意味がないのでこれでも終了してしまうかも。まあ100くらいなら、魔神も多めに見てくれるような気もしますけどね。

>「私に、あなたがいなくても自由に何でも願いを叶えられる力をください。そしたらさっさと帰れ」
正解でしょうね。処理の中で命令を自分で回し続けるというプログラム(願い)を手に入れているので。ただ、物語だと話が破綻するのでまずないでしょうけどね。

>[してほしい事]を一つ言ってくださいと断ればいいのでは
それでも「俺は魔神に願いを無限に叶えるという行為をしてほしい」と言いかえされると同じかな? いや、これに関しては突破口があるかも?

>「自分が満足するまで願いをかなえてくれ」
DONTAKTさんでの切り返し。終了条件に「自分が満足するまで」というものを追加した。すなわち「満足する」という終了条件を満たさない限りはプログラムは最初の処理を抜け出せないということになる。となるとこれはループの中にさらにループを持たせてしまったという面で有効かな? ただ、トレジャーハンターは一瞬でも満足したらそこで終了なので、何事も心の底から楽しめないという枷を背負うでしょうね。


そういえば昔、『GS美神極楽大作戦』で3つの願いをどうにかして叶えさせたくない魔神と、それを封じてゆく美神の戦いなんてのがありましたね。最後は美神の願い「自分に願いを叶えさせなさい」から、魔神の願いを「聞こえないふり」をして封じるという問答無用の手段で美神が勝った?けど。ま、願いを叶えるって処理の詳細が書かれた仕様書がない限り、立場が上の方が勝つんだなあ。ですのでそういう場面に遭遇しても、、欲張ったら損をするのかもというのはまた別のおはなし。