今回紹介するのは、「毒ワイン」の問題です。
問題
1000本のワインがあります。
この中の1本だけに、毒が入れられています。
毒入りワインを見つけ出すには、最低で何人にワインを飲ませる必要がありますか?
条件
・毒入りワインを1滴でも飲むと死んでしまいます。
・毒入りワインは飲んでから10時間~20時間の間に死にます。
24時間以内に毒入りワインを見つけるには、最低で何人にワインを飲ませる必要がありますか?
また、どんな方法で毒入りワインを見つけることが出来ますか?
解答はこちら↓↓↓
解答
ここから先が解答になります。
1000本のワインから毒入りワインを見つけるのに必要な人数は、10人です。
今回の問題を考える上で大事なポイントは、2進法です。
問題の解説の前に、2進法について説明しておきます。
知ってる人は読み飛ばしてください。
2進法とは?
普段僕たちが使っているのは10進法です。
0~9までの10個の数字を使って数を数えているので10進法と言います。
対して2進法は0と1だけを使って数を数えます。
例として、1~12までの10進法と2進法の対応は以下のようになります。
10進法から2進法への変換は次のように行います。
以下の例では、10進法での12を2進法の1100に書き換えています。
逆に、2進法から10進法への変換は次のように行います。
以下の例では、2進法での1100を10進法の12に書き換えています。
ワイン問題の解説
まず、それぞれのワインに10進法で番号を付けます。
(⑩) 1,2,3,4,…,998,999,1000となります。
次にこれらを2進法で書き換えます。
(②)1,10,11,100,…,1111100110,1111100111,1111101000となります。
上に示す通り、10進法の1000は2進法では1111101000となります。
したがって、10桁の数字で表すことが出来ます。
次に、A,B,C,D,E,F,G,H,I,Jの10人を用意します。
この10人に飲むワインの担当を振ります。
例えば、2進法における1のワインはA、10のワインはB、11のワインはAとB、100のワインはCが飲みます。
これを10進法の1000である1111101000の番号まで続けます。
最後の1111101000のワインはDとFとGとHとIとJが飲みます。
20時間後、誰が亡くなったかを見ることで、毒ワイン1本を見つけ出すことが出来ます。
例えば、CとDとFとHとIが亡くなったら毒ワインの番号は110101100で、10進法では428となります。
このように飲み方を工夫することで、10人という少ない人数で1000本のワインの中から毒ワインを見つけ出すことが出来ました。
おまけ
おまけでもう一問紹介しておきます。
先程の問題よりは簡単です。
問題
A,B,C,D,Eの5個の瓶があります。
それぞれの瓶の中には1個10gの薬がたくさん入っています。
しかし、1つの瓶の中身は全て偽物の薬で、重さは1個9gです。
はかりを一回だけ使って偽物の瓶を見つけるにはどうしたらいでしょうか?
解答
Aからは1個、Bからは2個、Cからは3個、Dからは4個、Eからは5個取り出してはかりに乗せます。
もし全部が本物なら、はかりは(1+2+3+4+5)×10=150gを示します。
したがって、はかりが149g、148g、147g、146g、145gのどれを示すかによって、偽物の瓶がわかります。
今回はここまでです。
最後までご覧いただきありがとうございました。