一列に並んだ100人が、自分の帽子の色を当てていく。シンプルながらも、かなり絶望的な状況ではあります。

 最後尾の人は自分以外の全員の帽子が見えますから、その人が99人全員の帽子の色を言ってくれたら少なくとも99人は救えます。ですが、口にしていいのは、「赤」か「青」のどちらか一言のみ。

 それなら、100人が何の戦略もなく勘で答えていったら?「赤」か「青」の2択なので、正解できるのは平均して50人くらいでしょうか。
「何も作戦がない状態」での脱出人数がおおよそ50人ということ。せっかく事前に相談できるのですから、これよりはマシな結果にしないといけませんね。

 世界的一流企業であるGoogleの入社試験でも出題されるような難問です。心して取り組んでみましょう。

受け止めるべき現実

 なかなか厳しい状況ですが、なかでも、とくに絶望的な人がいます。
 それは、列の最後尾の人

 100個の帽子のうち赤が何個あるかなど、事前に帽子の内訳を知らされているわけではない。なおかつ、自分がかぶっている帽子を誰一人として見ていない。
 こうなると、最後尾の人は自分の帽子の色を知る手段がありません。この人が自分の帽子を当てられるかどうかは、神頼みになります。50%の確率で帽子の色を言い当てられることを祈るしかありません。

 つらいですが、受け止めなくてはいけない現実です……。

前の人の帽子の色を答える作戦

 それならせめて、この最後尾の人の発言によって、他の人の正答率が少しでも上がるヒントを伝える方法はないでしょうか?

 最初に考えつくのは「目の前の人の帽子の色を答える」という方法。こうすれば、99番目に並んでいる人は正しい答えを入手できます。これを全員でやっていくのはどうでしょう?

 ……いえ、これは無理ですね。
 あなたが99番目の人であると考えてみてください。最後尾の人が「赤」と答えたら、あなたの帽子は赤だとわかります。でも、あなたの目の前にいる人の帽子は青だとしたら?

・「赤」と答える→自分は正解できるが、98番目の人は間違える
・「青」と答える→98番目の人は正解できるが、自分は間違える

 自分を助けるか、目の前にいる人を助けるか。……ジレンマです。

当てずっぽうよりもいい作戦

 もうちょっとスマートにして、たとえば偶数番号の人が目の前の人の帽子の色を答えるという作戦はどうでしょう。奇数番号の人は、後ろの人が教えてくれたとおりに自分の帽子の色を答えるだけです。これで奇数番号の人、つまり50人は絶対に正解できます。

 そして偶数番号の人は目の前の人の帽子の色を答えるわけですが、それが自分の帽子の色と同じである場合もあります。色は赤か青の2択ですから、平均すると、偶数番号の人も50%の確率で自分の帽子の色を当てられるでしょう。

・偶数番号の50人:全員50%の確率で助かる
・奇数番号の50人:全員100%助かる

 という結果になるので、正解できる人数は平均75人になります。全員が勘で答えて平均50人しか正解できないよりはマシですね。

最後尾の人以外が助かる奇策

 ですが、もっといい作戦があります。驚くべきことに……

 最後尾の人以外の全員が確実に正解できる戦略があるんです。

 一体、どうすればいいのか?
 問題文には、こうあります。

 “宣言は全員が聞くことができる”

 最後尾の人の宣言によって、目の前にいる1人にとってではなく、自分以外の99人全員にとってヒントになるような何かしらの情報を送れたら、正解率をもっと上げられそうです。

 結論から言いましょう。その方法は……

 最後尾の人が、自分の前に見える赤い帽子の数を数えて、その数が奇数か偶数かを「帽子の色」で伝える

 という作戦です。詳しく見ていきましょう。

99番目の人はどう答えればいい?

 たとえば事前の相談で、最後尾の人の発言が示す意味を、

・赤=私より前にある赤い帽子の数は「奇数」
・青=私より前にある赤い帽子の数は「偶数」

 と決めておきます。これによって、何が起こるでしょう?
 あなたが列の99番目の人で、最後尾の人が「青」と答えたとします。これは、最後尾の人には赤い帽子が偶数個見えたことを意味します。ここであなたは、最後尾の人と同じように、

 自分の前に赤い帽子がいくつあるかを数えます。

 もし自分の前に、最後尾の人と同じく赤い帽子が偶数個見えたら?
 それは、最後尾の人がカウントした赤い帽子のなかにあなたの帽子は含まれていないということ。つまり、あなたは「青い帽子」だとわかります。

99番目の人の発言で伝わる事実

 この作戦の素晴らしいところは、あなたが「青」と答えたことで、

 あなたの前にいる98番目の人も正解できるところです。

 列の98番目の人は、最後尾の人と、あなたの発言を聞いて、

・1~99番目のなかに赤い帽子は偶数個ある
・99番目の人は青い帽子

 であるとわかります。
 ここから、98番目の人も、自分の前に見える帽子の色を数えることで自分の帽子の色がわかります。

 たとえば、98番目の人の前に見える赤い帽子が「偶数個」だったら。言い換えると、1~97番目のなかに赤い帽子が偶数個あったら。
 最後尾の人は1~99番目のなかにある赤い帽子の数が「偶数個」だと教えてくれました。そして、99番目の人の帽子はでした。つまり、こういうことです。

・1~97番目:赤が偶数個見える
・98番目:?
・99番目:青をかぶっている
・1~99番目:赤が偶数個見える

 もし98番目の人が「赤い帽子」であったなら、赤い帽子は「偶数個(1~97番目)+1個(98番目)」となり、1~98番目のなかには赤い帽子が「奇数個」あることに。99番目の人は「青」だったので、これでは1~99番目のなかには「赤い帽子」が「奇数個」あることになってしまいます。最後尾の人の発言と矛盾してしまいますね。

 ということは、最後尾の人がカウントした赤い帽子のなかに、98番目の人の帽子は含まれていない。つまり、98番目の人は「青い帽子」だとわかります。

 98番目の人の前に赤い帽子が奇数個見えた場合も、同じ考え方です。99番目の帽子が青ということは、98番目が「赤い帽子」でないと、最後尾の人から見た1~99人のなかの赤い帽子が偶数になりません。なので、98番目の人は「赤い帽子」だとわかります。

 このようにして、99番目から1番目までの全員が、自分の帽子の色を正しく答えられます。

奇策がもたらす奇跡

 まとめましょう。
 まず、列の最後尾の人が、事前相談のとおりに「赤」もしくは「青」と宣言することで、列全体で赤い帽子が「奇数個あるのか、偶数個あるのか」を全員に伝えます。

 そして最後尾より前にいる人は、「自分より前に見える赤い帽子の数」と「自分の後ろにいる、赤い帽子と答えた人の数」をもとに考えることで、自分の帽子の色が特定できます。

 この作戦を使うことで、99人は確実に、そして最後尾の1人も50%の確率で自分の帽子の色を当てられます。

<正解>
 最後尾の人が、1~99人のなかに赤い帽子が「奇数個あるのか、偶数個あるのか」を色に置き換えて全員に伝える。最後尾より前にいる人は、「自分より前に見える赤い帽子の数」と「自分の後ろにいる、赤い帽子と答えた人の数」をもとに考えて答えていけば、少なくとも99人は脱出できる。

この問題から学べること

 いかにも論理的思考問題といったスマートな解答ですね。ただ、この問題をもっと深く考察すると別の知見も得られます。「論理的には正解だが、はたして現実的にも正解なのか?」と。

 この方法では、最後尾の人の答えと、自分の後ろの何人が「赤」と言ったかを全員が覚えていなければなりません。そして自分の番がきたら、自分より後ろの人たちから受け取った情報と、自分の前に見える赤い帽子の数をもとに、最後尾の人の発言と照らし合わせて答えを導かないといけません。

 現実的に、全員が冷静にこれを実行できるでしょうか。全員が論理的ではなく、記憶力がよくない人が交じっていたら。1人でもミスをしたら、すべてが崩れ去ります。

 いくら論理的に正しい答えであっても、現実においてそれが実現可能かどうかは別の問題です。現実の世界は、すべてが論理で動く世界ではない。現実的な解決策としてどう落とし込むかは、現実の状況も考慮して柔軟に考えていくしかないのです。

(本稿は、『もっと!! 頭のいい人だけが解ける論理的思考問題』から抜粋した内容です。書籍では同様の「読むほどに賢くなる問題」を多数紹介しています)