1000本の毒ワイン | 勤務医のメモ帳

勤務医のメモ帳

勉強したことをメモっていきます。
それ以外のこともいろいろ書いていく予定です。
質問も受け付けます。

論理クイズでこんなものを発見しました。


「1000本のワインがあって、1本は毒入りです。毒入りワインを1滴でも飲むと10時間から20時間の間に必ず死亡します。はっきりした時間は決まっていませんが10時間以下でも20時間以上でもない時間に死にます。奴隷を使って24時間以内に毒入りワインを見つけるには最低何人の奴隷が必要でしょうか。」


という問題です。


「最低何人」という注釈がある論理クイズですので答えは単純な1000人ではないはずです。

えー、自慢ですが、僕はこの問題はすぐわかりました。


10人です。


どういう風に正解を思いついたかと言うと、

奴隷1人がどうなるかは「死ぬ」、「死なない」の2通り。

つまり「1」か「0」であらわすことができます。

「1」か「0」で表す数字といえばそう、二進法ですね。


二進法で十進法の1000を表す最低の桁数は10です。

つまり、n桁の二進法は十進法で

2のn乗-1

までの数をあらわすことができます。


例えば2桁の二進法は、

0(=0)、1(=1)、10(=2)、11(=3)までで、

2の2乗(=4)-1=3


3桁の二進法は

0(=0)、1(=1)、10(=2)、11(=3)、100(=4)、101(=5)、110(=6)、111(=7)

2の3乗(=8)-1=7


と実際に合っていることがわかります。

※括弧内は十進法の数字です。


ちなみに4桁の2進法は十進法のいくつまであらわすことができますか?

簡単ですね。

2の4乗(=16)-1=15

という事で十進数の15まであらわすことができます。


では、十進数の1000まであらわすには最低何桁の2進数が必要でしょう。

2の4乗からさらに続けると、

2の5乗=32

2の6乗=64

2の7乗=128

2の8乗=256

2の9乗=512

2の10乗=1024


よって、10桁あれば十進数で「1024-1=1023」までの数字を表現できます。

つまり、10人の奴隷の「死ぬ」「死なない」の組み合わせて1023本までの毒入りワインを発見できます。


数学にあまり慣れていない人はまだ「?」となっているかもしれません。

そういう時はいきなり1000本などという大風呂敷を広げず、

とりあえず10本のワインで考えましょう。


本数が違うだけで内容は同じです。

10本のワインの中に1本だけ毒入りがあり、上記の問題のような死に方をします。

24時間以内で、最低人数の奴隷で毒入りワインを発見しなさいというものです。


とりあえず答えを出してみましょう。

二進数で十進数の10を表現できる最低の桁数は、

2の4乗(=16)-1=15

なので4桁になります。


つまり、4人奴隷がいれば10本の中から毒入りワインを発見できると。

ほんまかいな。

本当にそうなるのか試してみましょう。


まずは10本のワインに番号をつけてそれぞれ二進法に変換します。


ワイン①:0001

ワイン②:0010

ワイン③:0011

ワイン④:0100

ワイン⑤:0101

ワイン⑥:0110

ワイン⑦:0111

ワイン⑧:1000

ワイン⑨:1001

ワイン⑩:1010


できましたね。

十進法から二進法への変換は機会があれば記事にします。

興味がある方は調べてもらえばいくらでもわかりやすく解説したページが出てきます。


次に奴隷にABCDと名前をつけて、

それぞれ1桁目、2桁目、3桁目、4桁目に割り当てます。


そして、担当の桁が1のワインを飲むことにします。

例えばワイン③は3桁目、4桁目が1ですのでCとDが飲みます。

例えばワイン⑩は1桁目、3桁目が1ですのでAとCが飲みます。


だんだんわかってきましたか?

つまり、死んだ奴隷の組み合わせで毒入りワインがわかるという仕組みです。

これがこの問題のキーポイントです。

これがわかれば簡単です。


では、問題です。

この10本の問題で、Aだけが死にました。毒入りワインはどのワインでしたか?


はい、簡単ですね。

1桁目だけが1のワインは⑧のワインです。

つまり、ワイン⑧が毒入りであったとわかるわけです。


後は本数が増えるだけなので難しくありません。

4人では15本までいけます。

5人では31本までいけます。

6人では63本までいけます。

………

10人では1023本までいけます。

という訳です。


拙い説明でしたがご理解頂けましたでしょうか。






ここからは余談ですが、

100万本のワインの中で毒入りが1本ある場合最低何人の奴隷が必要でしょうか。

単純なイメージではものすごい人数が必要になる気がしませんか?


正解は20人です。


たった20人で100万本(正確には1048575本まで)のワインから毒入り1本を発見できます。

言い換えれば、20桁の2進数は104万8575までの数字を表現できるということです。

倍々にしていくとすごい勢いで増えていという事がイメージできますか?


逆に50人いたら何本までのワインの中から1本の毒入りを発見できるでしょうか?


正解は1125兆8999億684万2623本のワインまでいけます。


とんでもない数ですね。

この世のすべてのワインを数えてもとても追いつかない数字です。






もうひとつ、倍々がすごい数になるというお話を。

紙を50回、半分半分に折っていったら厚さがどれくらいになるかという話です。


紙の厚さを0.1 mmとしましょう。

これを半分半分に折って倍々にしていきます。

もちろん実際にはできません。

試すのは自由ですが。笑


みなさんはどんな想像をしますか?

「1 mぐらいいくんじゃないか。」

「まさか、もしかして100 mぐらいいくかもよ。」

想像を膨らませながら、実際にやってみましょう!


1回:0.2 mm

2回:0.4 mm

3回:0.8 mm

4回:1.6 mm

5回:3.2 mm (3 mmって全然大した事ないな…)

6回:6.4 mm

7回:12.8 mm=1.3 cm

8回:2.6 cm

9回:5.2 cm

10回:10.4 cm (10回で折ったら10 cmの厚さになりました!)

11回:20.8 cm

12回:41.6 cm

13回:83.2 cm

14回:166.4 cm=1.7 m (15回足らずで1 mを超えました!)

15回:3.4 m

16回:6.8 m

17回:13.6 m

18回:27.2 m

19回:54.4 m

20回:108.8 m (20回折ったら100 m超えた!)

21回:217.6 m

22回:435.2 m

23回:870.4 m

24回:1740.8 m=1.7 km (25回足らずで1 km超えた!)

25回:3.4 km

26回:6.8 km

27回:13.6 km

28回:27.2 km

29回:54.4 km

30回:108.8 km (30回折ったら100 km超!!)

31回:217.6 km

32回:535.2 km (32回折ったら東京大阪間の距離です!)

33回:1070 km

34回:2140 km

35回:4280 km

36回:8560 km

37回:1万7120 km

38回:3万4240 km

39回:6万8480 km (40回折らずして地球1周の距離を超えてしまいました…)

40回:13万6960 km

41回:27万3920 km

42回:54万7840 km (42回で月までの距離を超えました!!)

43回:109万5680 km

44回:219万1360 km

45回:438万2720 km

46回:876万5440 km

47回:1753万880 km

48回:3506万1760 km

49回:7012万3520 km

50回:1億4024万7040 km (なんと、太陽に到達です!!)


どうでしたか?想像通りでしたか?

驚かれた方も少なからずいるのではないでしょうか。

50回というと全然大した事なさそうな回数ですが、

倍々にするとえらいことになるんです。

紙を50回折ったら太陽まで届くとは、何とも驚きですね。