R.Tanaka.Ichiro's Blog

主にC# な話題です

目次

Blog 利用状況

ニュース

3人を特定するという問題(その3)

3人を特定するという問題(その3)

3人を特定するという問題:http://blogs.wankuma.com/rti/archive/2006/09/15/38848.aspx
3人を特定するという問題(その2):http://blogs.wankuma.com/rti/archive/2006/09/20/39201.aspx

前回の内容ですが、コメントにて、わちゃさんからご指摘をいただきました。
これによって、次のことがわかりました。

「あなたはQですかと聞かれたら、なっ!と答えますか?」の質問に対して、答えが「なっ!」ならQの質問は真、「ぜ!」なら偽になる。(これが通用するのは、J氏R氏の2名のみ)
理由は、「なっ!」か「ぜ!」をランダムに回答するB氏の回答からは、規則性を見出せないから。

しかし、J氏とR氏の回答からは常に正しい結果を得られることがわかります。

じゃあB氏からは、正しい結果は得られないのでしょうか?・・・
答えは、正しい場合もあれば、違っている場合もある。
・・・と言うことは、「間違った回答をした人はB氏である。」と言えます!

ここまで判断材料が揃えば、何とかなりそうです。

但し、3名が常に同じ回答をするという定理が崩れたため、今回は誰に聞くのかが大変重要になります。
そこで、Q() と言う便利なメソッドを用意します。

このメソッドを使って「1番の人に質問します。3番はB氏ですね?と聞いたら、なっ!と答えますか?」の質問は、以下の記述にします。

if Q(1, 3 = B) {}

その結果、なっ!と答えたら true 、ぜ!と答えたら false が返る訳です。
但し、質問した人がB氏だった場合は、true, false の結果は信用できません。
つまり、Qメソッドは、基本的に、(((3 == b) == na) == na) の判定がなされているのですが、運悪く HearNumber(以下参照) が B氏だった場合は、ランダムで結果を返るのだと考えて下さい。


boolean Q(int HearNumber, int Number, int Who) {
    ・・・ここで何をしているのかは秘密w
}

void main() {
    if (Q(1, 3, b)) {
        if (Q(2, 3, b)) {
            console.writeline("3 = b"); // 二人が同じ結果を返したので確定
            if (Q(1, 2, R)) { // 他の二人は b でないから、この結果は信用できる
                console.writeline("2 = R");
                console.writeline("1 = J");
            }
            else {
                console.writeline("2 = J");
                console.writeline("1 = R");
            }
        }
        else {
            // 1 と 2 は異なる回答なので、どちらかが b である
            // よって 3 は b ではありません。
            // つまり最初に 3 は b でないと言った 1 は嘘をついたので b に確定
            console.writeline("1 = b");
            if (Q(3, 3, R)) { // 他の二人は b でないので、この結果は信用できる
                console.writeline("2 = J");
                console.writeline("3 = R");
            }
            else {
                console.writeline("2 = R");
                console.writeline("3 = J");
            }
        }
    }
    else {
        // 1 が b なら、他の人は全員が本当のことを言う。
        // 1 が b でないなら、本当のことを言う。つまり 3 は b では無い。
        // つまり、1が b でも、b じゃなくても 3 は本当のことを言う。
        // ってことは、3 は b じゃない。
        if (Q(3, 2, B)) {
            console.writeline("2 = B");
            if (Q(3, 1, R)) {
                console.writeline("1 = R");
                console.writeline("3 = J");
            }
            else {
                console.writeline("1 = R");
                console.writeline("3 = J");
            }
        }
        else {
            // 上にあるように 3 は本当のことを言う。つまり 2 は b ではない。
            // 上にあるように 3 は本当のことを言う。つまり 3 も b ではない。
            // ってことは残りが・・・
            console.writeline("1 = B");
            if (Q(3, 2, R)) {
                console.writeline("2 = R");
                console.writeline("3 = J");
            }
            else {
                console.writeline("2 = J");
                console.writeline("3 = R");
            }
        }
    }
}   


これでどうだろうか?

ツッコミ更にまってま~すっw

投稿日時 : 2006年9月21日 18:28

Feedback

# re: 3人を特定するという問題(その3) 2006/09/21 23:30 とりす・がり

if (Q(1, 3, b)) {
if (Q(2, 3, b)) {
console.writeline("3 = b"); // 二人が同じ結果を返したので確定

この時点ですでにおかしいと思うんだけど・・・。


一度、今の考えを捨て去った方がよいかと・・・。

# re: 3人を特定するという問題(その3) 2006/09/21 23:58 R・田中一郎

一応、二人が同じ結果を返したので確定、の理由です。

1の人に「3はBかと聞かれたら、なっ!と答えますか?」で「なっ!」
2の人に「3はBかと聞かれたら、なっ!と答えますか?」で「なっ!」

仮に1か2のどちらかが、Bなら、1か2のどちらかが嘘をつくことになる。
嘘をつくのはBしかいない。
ということは、例えば1がBなら1が嘘をつくのは納得がいくが、2も嘘をつくことはあり得ない、とならないだろうか?
2がBだとしても、1が嘘をつくということはあり得ない。

と言うことで、二人が同じ結果を返した「3はB」というのが答えになるという意味なのですが。

# re: 3人を特定するという問題(その3) 2006/09/22 0:32 とりす・がり

あ~そうか、そうですね。
あってるような気がしてきたwww

# re: 3人を特定するという問題(その3) 2006/09/22 0:58 R・田中一郎

元の記事にもうすこし細かく書けば良かったですね^^;

#とりあえず「ほっ」としていたりしてw

# re: 3人を特定するという問題(その3) 2006/09/22 0:59 かるあ

コードで書くよりもフローチャートなんかで書くとすっきりしそうですね。
まだ、やってないけれど(汗

# re: 3人を特定するという問題(その3) 2006/09/22 1:11 R・田中一郎

なるほど~

実はコードで書いたのは、こだわりでもなんでもなくて、単に考えながら書くのにソースコードが書きなれているからだったり・・・(一応、これでメシ食ってるので、って今更w)

文章で書いたら絶対バグるw

# re: 3人を特定するという問題(その3) 2006/09/22 7:51 わちゃ

前半も後半と同じように考えた方が、分かり易いんでしょうか。
つまり、最初の if 文が true の場合、、

 // 1 が b なら、他の人は全員が本当のことを言う。( 2 は b では無い )
 // 1 が b でないなら、本当のことを言う。つまり 3 が b なので、2 は b では無い。
 // つまり、1が b でも、b じゃなくても 2 は本当のことを言う。
 // ってことは、2 は b じゃない。

まぁ、ロジックとしては同じなんですけどね。


仕様って、たしかに、フローチャート書くより if 分とか case で描いちゃったほうが
書きやすいし見やすい場合がありますよね。

特に、書きやすさが重要。

仕様を打ち合わせる時なんかは、ノートPCの画面をプロジェクターで写しながら
みんなでやるんで、フローチャートみたいな書き換えが大変なものより、さくさく
書き換えるのが楽な方がいいですよね。

フローチャートも、他人に見せるように清書するときはいいんでしょうけどね。

# re: 3人を特定するという問題(その3) 2006/09/22 10:43 ぽぴ王子

最近フローチャートばっかり書いている俺が来たよヽ(´ー`)ノ

まぁ自分で流れを把握するためのものなので、厳密に□や◇を書いたりはしないで
すが。
単に文字列と矢印だけで書いていくので、(゚д゚)ウマー誕生の流れみたいな感じです :-)
こんなの。
http://maruheso.at.infoseek.co.jp/aadic/1gaa.html#uma-

今の現場はものすごくうるさいので、全部を頭の中で考えようとするとすぐ混乱して
しまいます。ということで書いて流れを把握するということが当然のようになってきま
した。あと年のせいで物忘れが激しく(ry

ところで、これって「うそつき族と正直族」みたいなやつですよね(解く気がまったく無
いのでほとんど見ていない)。確か小学生のときになぞなぞ本で見ました。
…小学生の頃から変わっていないのか orz

# re: 3人を特定するという問題(その3) 2006/09/22 16:37 R・田中一郎

>わちゃさん
>前半も後半と同じように考えた方が、分かり易いんでしょうか。

なるほど、と思いました。
確かに、そうした方がわかりやすいですね。

>フローチャートも、他人に見せるように清書するときはいいんでしょうけどね。

お客さんに見せるときはフローチャートでないとまずいですよね。

プログラマ同士なら、コードでも良いのかな~、と思ってみたり。
わかりにくいのは、コーディングを見直せということでw



>ぽぴ王子さん
>単に文字列と矢印だけで書いていくので、(゚д゚)ウマー誕生の流れみたいな感じです :-)

わかります。
僕も、大きなシステムとか複雑なロジックとか、仕様を考える時は、似たような方法をとってます。
頭の中だけで考えると訳がわからなくなるので、2次メモリが必要・・みたいな感じですね^^;
僕は、秀丸が一番頭の中の物事を素早く文章化できるので、秀丸がネタ帳みたいなw

>ところで、これって「うそつき族と正直族」みたいなやつですよね(解く気がまったく無

そうですね。最も、こっちの方がより強力ですが。
ホームページができたら、きちんとまとめようと思っているので、時間がある時にでも読んでやって下さい。
結構、面白いと思うので・・・^^;



実は、僕はこの手のクイズが大嫌いでして、真面目に解こうと思ったのは今回が初めてです。
・・・・・必要に迫られて(ぼそっw)

#最悪、わちゃさんに泣きつこうと思っていたことは、ここだけの秘密ですw

# re: 3人を特定するという問題(その3) 2006/09/22 18:00 わちゃ

>プログラマ同士なら、コードでも良いのかな~、と思ってみたり。
>わかりにくいのは、コーディングを見直せということでw

たしかに、分かりにくいのは、どうせろくなコードじゃないですもんね。
私は、こんな感じで書いてます。

AとBを比較
Aの方が大きい場合:
ほげほげ
Bの方が大きいか等しい場合:
ごにょごにょ



>僕は、秀丸が一番頭の中の物事を素早く文章化できるので、秀丸がネタ帳みたいなw

あぁ、これは私も一緒です!!
実は、今日、秀丸エディタの最新版をダウンロードして感動しているところです。

アウトラインの機能と、折りたたみの機能がうれしい!!


>#最悪、わちゃさんに泣きつこうと思っていたことは、ここだけの秘密ですw

いやぁ、泣き疲れてもなかなか他人に分かるように書けなさそうな気が、、、

# re: 3人を特定するという問題(その3) 2006/09/22 18:34 R・田中一郎

>わちゃさん
>実は、今日、秀丸エディタの最新版をダウンロードして感動しているところです。

なかーま、ゆきーえ(表記がちょっと違うかな?)

秀丸エディタは、Windows3.1 の頃から使っているんですよ。

(秀まるおさんとは、以前 Nifty-serve のシェアウェア作者専用会議室で絡んだことがあったり・・先方は覚えてないでしょうけどw)

キーアサインを、全部変更してホームポジションから指を離さないで全ての操作ができるようにしてあります。

>アウトラインの機能と、折りたたみの機能がうれしい!!

これは便利そうですね。僕もダウンロードしてみようと思います。


>いやぁ、泣き疲れてもなかなか他人に分かるように書けなさそうな気が、、、

僕は、根があまり賢い方ではないので、その分、わからない人にわかりやすく説明しやすいかもしれません^^;

# re: 3人を特定するという問題(その3) 2006/09/22 21:06 わちゃ

すげ~ Windows 3.1 からの頃とは!


あの頃は、Windows っていうと、マインスイーパーぐらいしか
やるものがなかった気がします。

むしろ、FD と VZ って感じでしたね。

私の秀丸もキーアサインを変更してて、カーソル移動と検索系だけ
Mule 風という不思議なキーアサインです。

さすがに、コピーとかは、Windows 風ですねw

#でも、範囲選択には、普通にカーソルキーを使っちゃいます。

# re: 3人を特定するという問題(その3) 2006/09/23 23:45 R・田中一郎

>あの頃は、Windows っていうと、マインスイーパーぐらいしか

Windows95 リリースの時は、随分と話題になりましたが、実は3.1で十分実用レベルに達していたかな?、と思ってます。

それ以前は、このアプリを実行したあと、このアプリを実行すると落ちる!、みたいなパターンを自分で検証しながら使わなければいけませんでしたけれども^^;

>むしろ、FD と VZ って感じでしたね。

ms-dos 環境ですね。僕は、Mifes が多かったです。

# apEndXvRSToecIOffe 2011/12/28 6:49 http://www.seokiwi.com/

Read, of course, far from my topic. But still, we can work together. How do you feel about trust management?!...

# yOQgkTpJheelq 2011/12/29 2:54 http://www.seokiwi.com/

Hi! Everyone who reads this blog - Happy Reconciliation and Accord..!

# dPJXvittIasgpxx 2012/01/14 2:53 http://www.michelegreenmd.com/

comment3

# how to write a how to essay r79fwp 2022/09/09 5:51 Charlosmox


Truly a good deal of great information! https://definitionessays.com/ how to write a good essay for a scholarship

# buy custom papers online e77bvb 2023/03/01 10:17 StevenGrelo


Terrific facts. Kudos.
paper writing service best https://service-essay.com/ paper writing service india

# help me write my thesis m71tcd 2023/03/03 8:28 Josephbried


Fantastic information. Cheers.
thesis staements https://writingthesistops.com/ write a thesis sentence

# writers help g473bo 2023/03/06 14:43 EugeneSib


Awesome stuff. Kudos!
digital dissertations online https://argumentativethesis.com essay writing helper https://essaywritingservicetop.com

# buy cheap essays online e98mwb 2023/03/06 21:07 Gregorysaipt


Reliable data. Thanks a lot.
how to write an essay for an application https://helptowriteanessay.com essay writing guides https://topswritingservices.com

# essay writing technique a65xmt 2023/03/07 5:47 EugeneSib


Incredible a lot of fantastic information!
essay writing service law school https://helpwithdissertationwriting.com blog writing services packages https://helpwithdissertationwriting.com

# best writing essay a66mxo 2023/03/07 19:34 Gregorysaipt


Really plenty of useful knowledge.
how to write a good application essay https://researchproposalforphd.com buy an essay online https://essayservicehelp.com

# how to write reflective essays n39cmb 2023/03/07 21:00 EugeneSib


Kudos! A lot of facts!
essays on college life https://phdthesisdissertation.com teaching essay writing https://essaywritingservicetop.com

# buy college essays e958xh 2023/03/08 12:43 EugeneSib


Appreciate it, Loads of stuff!
writing a short essay https://ouressays.com high school vs college essay https://dissertationwritingtops.com

# how to write better essays k64qav 2023/03/08 17:58 Gregorysaipt


Kudos! I value it.
essay write https://homeworkcourseworkhelps.com finance dissertations https://englishessayhelp.com

# how to write descriptive essays t47itg 2023/03/09 5:28 EugeneSib


Lovely content, Cheers.
music to write essays to https://paperwritingservicecheap.com college scholarship essay help https://essayssolution.com

# define dissertations l52dsa 2023/03/11 1:24 EugeneSib


Appreciate it! Ample write ups!
fake essay writer https://writingthesistops.com writing literary analysis essay https://essaywritingserviceahrefs.com

# write my essay custom writing k970cc 2023/03/11 10:54 Gregorysaipt


Nicely put, Cheers.
steps for writing an essay https://essaywritingservicebbc.com write my college essay for me https://writingpaperforme.com

# how to write essays h32pqx 2023/03/13 12:31 EugeneSib

You reported that terrifically.
best article writing service https://essayservicehelp.com how long should a college essay be https://essaytyperhelp.com

# essay writers toronto r16iit 2023/03/14 9:51 Gregorysaipt


Appreciate it! Loads of content!
good thesis statement https://studentessaywriting.com are dissertation writing services legal https://topswritingservices.com

# homework writing services p12tlo 2023/03/15 3:21 Gregorysaipt

You suggested it fantastically!
psychology dissertations https://essaytyperhelp.com custom article writing service https://argumentativethesis.com

# essays about community service h122kj 2023/03/16 14:07 Gregorysaipt


Amazing quite a lot of terrific material!
books on essay writing https://helpwritingdissertation.com custom english essays https://homeworkcourseworkhelps.com

# best college essay help y14eea 2023/03/20 22:51 Gregorysaipt


You said it very well.!
essay writing prompts https://dissertationwritingtops.com average length of college essay https://topswritingservices.com

# academic essay z55ipv 2023/03/23 2:59 Gregorysaipt

You revealed this well.
custom essays writing https://helpmedomyxyzhomework.com english essay writing help https://cheapessaywriteronlineservices.com

# academic essay writing help v70lix 2023/04/01 23:54 EugeneSib


With thanks. Lots of info!
ivy league college essays https://essaywritingservicetop.com buy custom essay papers https://helpmedomyxyzhomework.com

# The plugins developed for WordPress 2023/05/09 21:10 Justas

The plugins developed for WordPress serve to enhance the features and functions of a WordPress website, allowing you to build your awesome and functional site https://t.me/wpigaming/648 Customise WordPress with powerful, professional and intuitive fields.

# The plugins developed for WordPress 2023/05/09 21:16 Justas

The plugins developed for WordPress serve to enhance the features and functions of a WordPress website, allowing you to build your awesome and functional site https://t.me/wpigaming/648 Customise WordPress with powerful, professional and intuitive fields.

タイトル
名前
Url
コメント