人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【超難問論理パズル】 らしいです。↓

http://d.hatena.ne.jp/hoshikuzu/20051010#P20051010IFF

何日も考えたのですが解けないのでギブアップしてしまいました。
そんな私に解答を解説してください。
私が一度で解答を理解できない可能性が高そうなので、何度かやり取りをする必要があるかもしれません。
それに付き合っていただける方のみ回答をお願いします。

ノーヒントで自力で解きたいという方も多いでしょうから、私がどこまで考えたかは書きません。
まあそれを書いたところで、どれだけヒントになるかは甚だ疑問ではありますが。



●質問者: BLOG15
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:パズル 論理
○ 状態 :終了
└ 回答数 : 7/7件

▽最新の回答へ

1 ● markII
●90ポイント

@1回目の質問

Aに対して

「あなたに『Bは乱神ですか?』と聞いたらダーと答えますか?」と聞く


@2回目の質問

・ダーと答えた場合=Cに対して

「あなたに『Aは乱神ですか?』と聞いたらダーと答えますか?」

・ヤーと答えた場合=Bに対して

「あなたに『Bは乱神ですか?』と聞いたらダーと答えますか?」



★解説★


1回目、Aに「あなたに『Bは乱神ですか?』と聞いたらダーと答えますか?」という質問。

これをyes/noに置き換えてみましょう。


これには

1.「あなたに『Bは乱神ですか?』と聞いたらyesと答えますか?」

2.「あなたに『Bは乱神ですか?』と聞いたらnoと答えますか?」の2パターンの可能性がありますよね。


1であれば、

Aが真神でBが偽神ならno

Aが真神でBが乱神ならyes

Aが偽神でBが真神ならno

Aが偽神でBが乱神ならyes

Aが乱神ならランダム


2であれば、

Aが真神でBが偽神なら、「乱神ですか?」にnoですから「noと答えますか?」にyes

Aが真神でBが乱神なら、「乱神ですか?」にyesですから「noと答えますか?」にno

Aが偽神でBが真神なら、「乱神ですか?」に嘘をついてyesですから、「noと答えますか?」にも嘘をついてyes

Aが偽神でBが乱神なら、「乱神ですか?」に嘘をついてnoですから、「noと答えますか?」にも嘘をついてno

Aが乱神ならランダム


真神も偽神も、「Bが乱神である場合」「Bが乱神でない場合」に共通の答えを出すことがわかると思います。

片方は本当のことを言う、もう片方は嘘をつくのに、同じ答えになるのです。


そしてこれをダーとヤーに戻してみましょう。

Aに「あなたに『Bは乱神ですか?』と聞いたらダーと答えますか?」と聞いて、

仮にBが乱神である場合、Aが真神でも偽神でも

「yesですか?」にyes

「noですか?」にno

と答えるのですから、Bが乱神なら「ダーと答えますか?」にはダーという答えが得られます。

逆に、Bが乱神でないのなら確実にヤーという答えが得られます。


しかしここでもう一つ、Aが乱神かもしれないという可能性が残っています。


そこで、2回目の質問にいきます。


1回目の質問でダーという答えを得たのであれば、Bが乱神であるか、もしくはAが乱神です。

Aが真神か偽神ならダーという答えはBが乱神であることを意味しますし、Cが乱神であればAが必然的に真神か偽神ということになり、Bが乱神であることが確定し矛盾が出てくるからです。


なので、Cに対して「あなたに『Aは乱神ですか?』と聞いたらダーと答えますか?」と聞きます。


・ダーと答えた場合

さきほどと同様に、Cが真神か偽神であれば、Aが乱神であるか、もしくはCが乱神であることを意味します。

しかしCは絶対に乱神ではないことが1回目の質問ですでにわかっていますので、Aが乱神であることが確定します。

・ヤーと答えた場合

こちらも、Cが真神か偽神であれば、Aが乱神ではないか、もしくはCが乱神であることを意味します。

Cは絶対に乱神ではないことがわかっていますから、残りのBが乱神ということになります。



1回目の質問でヤーという答えを得たのであれば、Bは乱神ではない、もしくはAが乱神。つまり、Bは絶対に乱神ではないことが確定します。



だからこの場合はBに対して「あなたに『Aは乱神ですか?』と聞いたらダーと答えますか?」

という質問をすれば、Bは真神か偽神なのですから、ダーならAが乱神、ヤーならCが乱神ということになります。




で、乱神がどれか特定出来たということは・・・3つ目の質問は簡単ですよね。

◎質問者からの返答

回答ありがとうございます。

夕方以降に再コメントさせていただきます。


2 ● meefla
●80ポイント

一番エレガントな解答を示します。


  1. 神Bに「あなたに『Aは乱神ですか?』と聞いたら、あなたは『ja』と答えますか?」と尋ねる。
    • Bの回答が「ja」であれば、Bが乱神でランダムに答えているか、Bは乱神ではなく回答が示すようにAが乱神である。いずれの場合も、Cは乱神ではない。
    • Bの回答が「da」であれば、Bが乱神でランダムに答えているか、Bは乱神ではなく回答が示すようにAは乱神ではない。いずれの場合も、Aは乱神ではない。
  2. 質問1で乱神ではないとわかった方の神(AまたはC)に、「あなたに『真神ですか?』と聞いたら、あなたは『ja』と答えますか?」と尋ねる。乱神ではないので、答えが「ja」であれば真神であり、答えが「da」であれば偽神である。
  3. 同じ神に「あなたに『Bは乱神ですか?』と聞いたら、あなたは『ja』と答えますか?」と尋ねる。回答が「ja」であれば、Bが乱神である。回答が「da」であれば、まだ質問していない神が乱神である。あとは消去法。

基本となるロジックを、1 の場合を例に取って。

Bが真神でja=Yesの場合、Aが乱神なら答えはja。(これは簡単ですな)

Bが偽神でja=Yesの場合、Aが乱神なら『Aは乱神ですか?』の答えはjaなので偽神はdaと答えるだろう。「あなたは『ja』と答えますか?」に対する正答はda=Noだが、偽神なので嘘をついて答えはja。

Bが真神でda=Yesの場合、Aが乱神なら『Aは乱神ですか?』の答えはdaなので、「あなたは『ja』と答えますか?」に対する答えはja=No。

Bが偽神でda=Yesの場合、Aが乱神なら『Aは乱神ですか?』の答えはdaなので偽神はjaと答えるだろう。「あなたは『ja』と答えますか?」に対する正答はda=Yesだが、偽神なので嘘をついて答えはja。

従って、「あなたに『Aは乱神ですか?』と聞いたら、あなたは『ja』と答えますか?」に対する答えが「ja」であれば、いずれの場合でもA=乱神となる。


ごめんなさい、アンチョコ見ました。

The Hardest Logic Puzzle Ever - Wikipedia

◎質問者からの返答

回答ありがとうございます。

夕方以降に再コメントさせていただきます。


3 ● kanan5100
●95ポイント ベストアンサー

この手の論理パズルでは、基本的なテクニックがいくつかあります。

まず、うそつきと正直者のどちらからも答えが得られるように「○○と聞かれたらyesと答えますか?」といった聞き方をすること。

それから面倒でもすべてのパターンの場合分けをして表を書くことです。

このパズルの場合、乱神からは情報が得られないので「誰が乱神でないのか」をまず特定することが必要です。

この方針で質問を組み立ててみます。

まず、Aに対して「Bは乱神ですか?と聞かれたらdaと答えますか?」と尋ねてみます。

わかりやすくするためにこの質問を前半と後半に分け、場合分けして表を書いて見ましょう。

Bは乱神? 神の答え daと答えるか?
A B C da=yes da=no da=yes da=no
真偽乱 false ja da ja ja
真乱偽 true da ja da da
偽真乱 false da ja ja ja
偽乱真 true ja da da da
乱真偽 false da/ja da/ja da/ja da/ja
乱偽真 false da/ja da/ja da/ja da/ja

答えがjaだった場合は、Bが真神または偽神。daの場合はCが真神または偽神であることがわかります。

これで、誰が乱神ではないかがわかったので、今度は「誰が乱神か」を特定するために乱神ではない神に質問します。

仮にBが乱神ではなかったとしましょう。

Bに対して、「Aは乱神ですか?と聞かれたらdaと答えますか?」と尋ねます。

場合分けは次のとおり。

Aは乱神? 神の答え daと答えるか?
A B C da=yes da=no da=yes da=no
偽真乱 false ja da ja ja
乱真偽 true da ja da da
真偽乱 false da ja ja ja
乱偽真 true ja da da da

答えがdaならAが乱神、jaならCが乱神とわかります。

あとは普通のうそつきパズルと同じです。

Cが乱神だったとして、Aに「Bは偽神ですか?と聞かれたらdaと答えますか?」と尋ね、答えがdaならAが真神、jaならAは偽神です。

Bは偽神か? 神の答え daと答えるか?
A B da=yes da=no da=yes da=no
真偽 true da ja da da
偽真 false da ja ja ja

ポイントは、最後までdaとjaのどちらがyesなのかわからなくてもいいというところです。

◎質問者からの返答

回答ありがとうございます。

夕方以降に再コメントさせていただきます。


4 ● winbd
●80ポイント

これって実はダーとヤーのどっちがyesでどっちがnoかはどうでもよくて、

相手がこちらの出した質問の言葉を使うかどうかの判断だけすればいいんです。


1回目の質問はAに

「きみに『Bって乱神?』と質問したらdaと答えるかい?」


この質問の形式なら正直者も嘘つきも同じ答えになるので、

daと答えたら「Bは乱神」

jaと答えたら「Bは乱神ではない」


しかしこの問題ではAが乱神でランダム回答の結果da/jaを答えた可能性もあります。


ということは、

daと答えたら「BかAが乱神。Cは乱神ではない。」→2回目の質問でCに同じように質問すればいい。

jaと答えたら「AかCが乱神。Bは乱神ではない。」→2回目の質問でBに同じように質問すればいい。


乱神じゃないことがわかっているので、

「きみに『Aって乱神?』と質問したらdaと答えるかい?」

に対する答えは

da=Aが乱神

ja=Aは乱神ではない

のだから、daならAが乱神、jaなら残った者が乱神。


最後に、残った二人のどちらかに「『きみは真神?」と聞いたらdaと答えるかい?」と聞けば、

daで答えられるのは真神だけ。

jaで答えられるのは偽神だけ。


ということです。

◎質問者からの返答

回答ありがとうございます。

夕方以降に再コメントさせていただきます。


5 ● TamU
●80ポイント

この問題では、いつも決まった答えを用意してくれない「乱神」をまず探し当てる必要があります。

まず、3人の神をそれぞれA、B、Cとします。

そして最初に、Aにこのように質問します

「Bに、Aに真神かどうかを聞いたら、Bはなんと答えるか」 (質問1)

a)Aが質問に対し、答えを用意できないとき。

Bが乱神です。

もしBが乱神の時、Aは答えを用意できません。なぜなら、Bがどちらを答えるか予想できないからです。

このとき、daとja、どちらがYesかNoかを見破るために、次の質問をします。

Aに「CにBが乱神かどうかを聞いた時、どうこたえるか」(da,ja,見破り質問)

この質問には、必ず「No」を意味する言葉で答えます。

なぜなら、Aが真神の時、Cは偽神なので、Bのことを乱神でないといい、Aは真なのでそれを正確に伝えます。つまりNo。

Aが偽神の時、Cは真神なので、Bのことを乱といい、Aはそれを逆に伝えます。つまりNo。

次に、A、Cがどちらの神かを見破ります。

Aに「CにAが真神かどうかを聞いたら、どうこたえるか」 (質問1-a)

もしAが真神の時、Cは偽神ですから、この質問に対してAは「No」と答えます。

もしAが偽神の時、Aは真神ですから、この質問に対してAは「Yes」と答えます。

判別終了。

b)da、もしくはjaの時

A、Cどちらが乱神であるかを見破る必要があります。

そして、次の質問をします。

Bに「AにCが乱神かどうかを聞いたら、なんと答えるか。」(質問1-b)

b-1)回答しないとき

Aが乱神です。そしてここでda,ja見破り質問をして、yes,noの判別をします。

そして、質問1-aと同じようにB、Cがどちらの神か判別します。

Bに「CにBが真神かどうかを聞いたら、どうこたえるか」 (質問2-b)

もしBが真神の時、Cは偽神ですから、この質問に対してAは「No」と答えます。

もしBが偽神の時、Aは真神ですから、この質問に対してAは「Yes」と答えます。

判別終了。

b-2)da,jaの時

Cが乱神です。そしてここでda,ja見破り質問をします。

そして、yes,noがわかったので

質問1でAがyesと答えたとき Aは偽神、Bは真神

noと答えたとき 上の逆

判別終了。

◎質問者からの返答

回答ありがとうございます。

夕方以降に再コメントさせていただきます。


1-5件表示/7件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ