小人さんクイズ解法ページ



問題文再掲載。

・問題
小人が100人すんでいる村に怪獣がやってきました。
「おまえたちを全員食べてしまうぞ」
「何でもしますから、どうか食べないで下さい。」
「では条件を出そう。おまえたちを100人縦一列に並べて、一人一人別々に赤・青・黄色の帽子のどれかをでたらめにかぶせる。前の人たちの帽子は全部見えるが、自分の帽子と後ろの人たちの帽子は見えない。さて、全員が一度ずつだけ「赤」「青」または「黄色」と叫ぶ事ができる。自分の帽子と同じ色を叫んだものは食べないでおいてやろう。」
「前もって打ち合わせをしてもいいですか? 例えば二人ずつ組みになって、偶数番目の人が自分を犠牲にして、すぐ前の人の色を言って教えてあげる事にしておけば、奇数番目の人は全員自分の帽子の色が言えて助かるわけですね。」
「どんな打ち合わせをしてもかまなわい。一晩考えて、一番犠牲者が少ないよう方法を考えるとよい。」
さて、一番良い方法を考えたとして、小人たちのうちの最大何人が助かるでしょうか?
もちろん上の会話から分かるように、最少でも50人が助かるようにはできるわけです。

*尚、問題文にはありませんが、色を叫ぶ際に発声の仕方やイントネーション等で別の情報を与えたり、ジェスチャー等で言葉以外の意思疎通を行う事はできません。
声を聞いて分かる事は、「赤」「青」「黄色」のいずれかである、という事だけです(そうでなかったら、簡単に99人は助かります)。



・ヒント(あくまで、私の考えた方法によるものです。当然、解法の仕方はいろいろあります)
一番最初に"叫ぶ"のは、当然最後尾の人です。
すると後ろから2番目の人は、自分から見えている98人分の帽子の色と、後ろの人が叫んだ色から、自分の色を導きだして"叫ぶ"事ができます。
以下同様。

どうして"叫ぶ"のかと言うと、一番前の人にも聞こえるようにしているからです。
つまり、一番前の人からは帽子は全く"見えません"が、自分が叫ぶ番が回ってくる頃に得られている情報は・・・。

問題は、最後尾の人がどうやって前の人の色を特定してあげるか、ですが、これは一工夫いります。
要は、状況にかかわらず自分の色を3通りから特定できればいいわけです。
例えば、色を"数"にでも置き換えて、その"数"を3つに分類する方法・・・と考えるとどうでしょう。


inserted by FC2 system