論理パズルは目解きしろ

論理パズルを解きたいかーーーっ!?

パズルの一種である「論理パズル」と呼ばれるものにおいて、正直者と嘘つき者が現れて、各々についての主張を繰り広げる場合が多い。例えば次のようなものだ。

A「Cは嘘つき者だ」
B「Aは正直者だ」
C「僕は正直者だ」
D「Eは正直者だ」
E「昨日は晴れだった」
嘘つき者が二人いるとき、それは誰と誰?

多分私のTwitter(@1220oz_an)のフォロワーの大半は謎解き好きだが、論理パズルに苦手意識を持っている人が一定数いるように思う。それは多分、「論理パズルの読み方」をそもそも分かっていないからだと思う。

謎解きにおいて論理パズルの登場回数は多い。今回は「平凡な論理パズルが小謎として登場した場合」を考える。小謎の論理パズルが速く解ける人や目解き(メモせず、見ただけで解くこと)ができる人はきっと仲間内で称賛されることだろう。悪くない。


平凡な論理パズルとは

今回は議論の対象とする平凡な論理パズルというのは、以下の通りのものだ。

(1) 登場人物が多すぎない
 せいぜい6人くらいが上限だろう。それを超えると「しんどい論理パズル」になる。(主観)

(2) 正直者/嘘つき者以外の要素が出てこない
 勝負事の順位や部屋の並び順の特定、趣味の特定等の要素が絡むと「普通の論理パズル」になる。それらは表を作り○✕をつけていく、等のちゃんとした解き方が望ましく、この記事で扱うにはやや重い。

(3) 正直者/嘘つき者の定義がややこしくない
 正直者は「必ず真実を言う」、嘘つき者は「必ず嘘を言う」ことにする。嘘の定義の曖昧さを利用したいじわるクイズ、真実も嘘も言う気まぐれな存在等が登場する論理パズルもあるが、それは「その手のやつ」になる。(※1)

実際、謎解き界隈で見かける論理パズルでも順位や並び順特定の論理パズルは多い。この記事の扱う平凡な論理パズルは狭い範囲だし、内容も「え? そんなの当たり前でしょ?」というレベルの内容かもしれない。

この記事の内容は「まずは基本を学ぼう」「二桁の掛け算を習う前にまず九九を覚えよう」みたいなレベルのものだと思ってもらえれば良い。


世界がもし一人の平凡な論理パズルだったら

登場人物が一人の場合について考えてみる。

case1-1
 A「昨日僕はカレーを食べたんだ」
case1-2
 A「僕は正直者だよ」
case1-3
 A「僕は嘘つき者だよ」

大雑把に、この三パターンしか存在しないと言って良いだろう。

case1-1
 何の役にも立たない無駄情報の主張。意外とこういう無駄発言をする人がいる論理パズルは多い(※2)が、もちろん無視して良い
case1-2
 自分が正直者だという主張。これはAが正直者であれば真実を言っているし、嘘つき者であれば嘘をついているので、矛盾しない。つまり、この発言をしていても正直者/嘘つき者のどちらもあり得るし、解く上で得られる情報は何も無い。つまりはパターン1-1と本質的に同じで、無視して良い
case1-3
 自分が嘘つき者だという主張。Aが正直者でも嘘つき者でも矛盾する。(確かめてほしい)
 基本的に「自分を正直者だ」ということしかできない(※3)ので、こういう発言をする人物は平凡な論理パズルにはそもそも登場しない。このパターンを意識することはない
 ※いわゆる「自己言及のパラドックス」である

以上から分かることは、「自己言及している発言は一つ残らず無視すれば良い」ということである。

A「Bは嘘つき者だ」
B「僕は正直者だよ」
C「Aは正直者だよ」
一人だけ嘘つきの時、それは誰?

とあれば、Bの発言は線を引いて消してしまっても良い。論理パズルにおいて意味をなすのは、他者について述べた発言に限る。


世界がもし二人の平凡な論理パズルだったら

二人いる世界では「他己言及」の概念が生まれる。結果、以下の三つのパターンが生まれる。

case2-1
 A「Bは昨日カレーを食べたんだ」
case2-2
 A「Bは正直者だよ」
case2-3
 A「Bは嘘つき者だよ」

case2-1
 無視。
case2-2
 ようやく意味を持つ情報が出てきた。ここでAが正直者ならばBは正直者であり、Aが嘘つき者ならばBも嘘つき者である。つまり「Bは正直者だよ」という発言は、「Bは私と『同じ属性』である」という主張に他ならない。
case2-3
 ここでAが正直者ならばBは嘘つき者であり、Aが嘘つき者であればBは正直者である。つまり、「Bは嘘つき者だよ」という発言は、「Bは私と「異なる属性』である」という主張に他ならない。

論理パズルを解く上で要領を得ている人はこの本質を理解している。つまり、各発言を「同属性か異属性か」と読み替えて解いている。

★余談
ちょっと捻った論理パズルだと、
A「Bは『私と同属性』だよ」 という発言が出てくる場合もある。
これからはB=正直者であることが導かれる。(確かめてみてほしい)
逆に、異属性だと主張していたらB=嘘つき者であることが導かれる。
これらの論理パズルにたくさん触れたいのであればレイモンド・スマリヤンの『パズルランドのアリス』を読むと良い。(子供から大人まで幅広く薦めたい名著)


平凡な論理パズルは「嘘つき者の人数」を絞り込むパズルである

平凡な論理パズルにおける他己言及は「同属性か」「異属性か」を示していると知った。ここで、
「同属性である」とは「私達二人の中に、嘘つき者はゼロ人か二人」ということと同じであるし、
「異属性である」とは「私達二人の中に、嘘つき者は一人」ということと同じである。
この事実さえ分かっていれば、大抵の平凡な論理パズルは一瞬で解ける。
例えば以下の簡単なパターン。

A「Bは嘘つき者だ」
B「僕は正直者だよ」
C「Aは正直者だよ」
一人だけ嘘つきの時、それは誰?

こう書かれていた時、各発言を翻訳するとこういうことになる。

A「AとBの中に嘘つき者が一人いる」
B「」
C「AとCの中に嘘つき者はゼロ人か二人」
一人だけ嘘つきの時、それは誰?

これを見れば答えを得るのは容易い。以下のどちらの順で解いてもほぼ時間は変わらないだろう。
Aの発言に注目する場合
 AとBのどちらかが嘘つきならCは正直者だ。
 Cが正直者ならAも正直者で、Bが嘘つき者だ。 
Cの発言に注目する場合
 
AとCの両方が嘘つきだと多すぎるから、AもCも正直者だ。
 なのでBが嘘つき者だ。

これを費やす時間は五秒で済む。


平凡な論理パズルをちゃんと解いてみよう

2問ほど問題を解いてみて、この記事はおしまいにしよう。

A「僕は正直者だ」
B「Dは嘘つき者だ」
C「Dは嘘つき者だ」
D「昨日は晴れだった」
嘘つき者が一人いるとき、それは誰?

この場合の思考は以下の通り。
(1) 発言を整理してみる
 ・
BとDは異属性、CとDは異属性。
 それ以外に有用な発言は存在しない。
(2) 嘘つきのいる範囲を考える
 ・BとDの中に嘘つきが一人いて、CとDの中に嘘つきが一人いる。
 ……いや、もうそんなのDに決まっているではないか。

よって解けた。この思考に費やす時間は五秒で済む。


もう一問いこう。

A「Cは嘘つき者だ」
B「Aは正直者だ」
C「僕は正直者だ」
D「Eは正直者だ」
E「昨日は晴れだった」
嘘つき者が二人いるとき、それは誰と誰?

この場合の思考は以下の通り。
(1) 発言を整理してみる
 AとBは同属性、Cは異属性。DとEは同属性。
 それ以外に有用な発言は存在しない。
(2) あとは「嘘つき者が二人」になるような調整ができるかどうかが肝
 この問題の場合嘘つき者を偶数人にすることを意識すると役立ちそうだ。
(3) DEの中には嘘つき者は必ず偶数人
(4) ABCの中の嘘つき者を偶数人にしたい

 ABCの中で嘘つきを奇数にしたら全体が奇数になってしまう。
 「ABが嘘つき者でCが正直者」「ABが正直者でCが嘘つき者」の二択だが、前者じゃないと駄目そうだ。これで解き明かせた。

解くのに費やす時間は十五秒以内で済むだろう。問題のサイズが大きくなればその分辛くなってくるが、「嘘つきはどの範囲に何人いるか?」という意識さえ切らさずにいればそうそう苦戦することはないはずだ。

めでたしめでたし。



(※1)真実も嘘も言う気まぐれな存在等が登場する論理パズルもあるが、それは「その手のやつ」になる。
天国への扉と地獄への扉(見分けがつかない)があり、必ず真実を言う天使、嘘をつく悪魔、どちらを言うか分からない人間(見分けがつかない)がいる、という状態で、Yes/Noで答えられる質問を二回して天国への扉を突き止める方法を問うパズル等が有名。(興味があれば適当に調べてね)

他にも、高田崇史の小説『試験に出るパズル 千葉千波の事件日記』では正直者、嘘つき者、本当と嘘を交互に言う者、の三人が登場する物語がある。これも完全に「その手のやつ」である。(とても面白い)

(※2)意外とこういう無駄発言をする人がいる論理パズルは多い
論理パズルを作った人は分かるが、大体人の発言は一、二ほど"余る"ので、無駄な発言をさせたくなるものである。例えばA~Dの四人の内一人が嘘つき者だとして、
A「Bは嘘つき者だ」 と B「Cは嘘つき者だ」
の二つの発言だけで既にBが嘘つき者を絞り込めているのである。

少し真面目な話をする。例えば人物が四人いて嘘つき者が一人であれば、「誰が嘘つき者か」は四パターンの候補があり、これを発言を用いて一パターンに絞るパズルということになる。ここで、情報理論という分野では各発言が"情報量"という値を持っていると考えることがある。

一発言が持つ情報量の最小値は0bit、最大値は1bit。これは「どれくらいパターンを絞り込める発言か」を示している数値だと考えても(今の議論においては)ほぼ問題ない。0bitであればパターンをまったく絞れない無駄情報。逆に1bitとは「パターン数を半分まで絞れる」ようなものだ。四パターンを一パターンに絞るのは半分の半分に絞れば良いから2bitの発言があれば良く、「1bitの発言二つ分」で事足りてしまうのである。

四人中二人が嘘つき者の場合でも、嘘つき者は(A,B),(A,C),(A,D),(B,C),(B,D),(C,D)の六パターンから一パターンに絞るパズルだと考えられる。これは約2.585bitの情報があれば足りるので、三人の発言で事足りてしまう。ゆえに発言は余り、無駄発言が生まれるのである。

(※3)基本的に「自分を正直者だ」ということしかできない
「自己言及する人は必ず自分を正直者だと主張する」というのは、「正直村に行きたい時は『あなたの村はどちらか』と尋ねれば良い」という有名な問題の答えに符合する。(興味があれば適当に調べてね)

この記事が気に入ったらサポートをしてみませんか?