真假話推理
「三人中只有一人說了實話」——這句話不是提示,是整題唯一的計算工具。學會把它變成一張檢查表,這一類題目幾乎都可以在一分鐘內解完。
🎯 這一頁學完,你會……
- 判斷一句話在某個假設下是真還是假
- 用假設法把所有情況列成表格,靠真話數量刷掉不合的
- 看出矛盾對(一定一真一假的兩句話),直接跳到答案
- 正確寫出一句話的否定(「都及格」的否定不是「都不及格」)
一先講清楚:什麼叫「真」、什麼叫「假」
在邏輯題裡,一句話只有兩種可能:真(符合事實)或假(不符合事實)。沒有「有點真」,也沒有「他只是記錯」。
乙說:「不是我做的。」
- 如果事實上是乙做的 → 這句話是假
- 如果事實上不是乙做的 → 這句話是真
同一句話,在不同的假設下真假不同。所以推理題一定要先假設,再判斷。
「說謊的人是壞人」「說謊的人一定是犯人」——都不對。在邏輯題裡,說謊只表示他那句話是假的。犯人有可能誠實地承認,好人也有可能為了保護同學說假話。只照條件算,不要加戲。
二方法一:假設法(最穩,一定會做)
- 列出所有可能的「真相」
犯人只會是甲、乙、丙其中一人 → 只有 3 種情況。 - 在每一種情況下,逐句判斷真假
假設是甲做的,那「是乙做的」就是假的、「不是我做的」(乙說)就是真的…… - 數一數有幾句真話
和題目給的數字(只有一人說實話)比對。 - 不合的刪掉,剩下的就是答案
正常的題目只會剩一個。剩兩個 → 代表條件不足(這也可能是選項之一)。
🔎 互動:自己試試三種假設
點一個假設,看看三句話分別變成真還是假,再數數看有幾句真話。
三測驗第 2 題:完整解析
教室的玻璃被打破了,一定是甲、乙、丙三人其中一人所為。
甲:「是乙做的。」 乙:「不是我做的。」 丙:「也不是我做的。」
三人中只有一人說了實話,玻璃是誰打破的?
| 假設 | 甲:是乙做的 | 乙:不是我做的 | 丙:不是我做的 | 真話幾句 | 合不合 |
|---|---|---|---|---|---|
| 甲打破的 | 假 | 真 | 真 | 2 | ❌ 太多 |
| 乙打破的 | 真 | 假 | 真 | 2 | ❌ 太多 |
| 丙打破的 | 假 | 真 | 假 | 1 | ✅ 剛好 |
只有「丙打破的」這個假設,會讓真話剛好是 1 句(只有乙說了實話)。其他兩個假設都會出現 2 句真話,和題目衝突,所以被刪掉。
注意最後一欄:三種假設只有一種活下來,所以答案唯一,(D)「條件不足」不成立。
四方法二:矛盾對(快,但要看得出來)
如果兩句話不可能同時為真,也不可能同時為假,就叫一組矛盾對。矛盾對一定是一真一假。
甲:「是乙做的。」 乙:「不是我做的。」
這兩句講的是同一件事(乙是不是犯人),而且說法完全相反 → 一定一真一假。
- 找出矛盾對
甲和乙這兩句,必有一真一假。 - 把真話的額度用掉
題目說只有一人說實話,而這唯一的一句真話已經在甲、乙之間了。 - 推出其他人一定說謊
所以丙說的是假話。丙說「不是我做的」是假的 → 就是丙做的。
題目只有三、四句話 → 假設法就夠快,而且不會出錯。句子很多(六、七個人)→ 先找矛盾對,把真話/假話的額度用掉,剩下的人身分就自動確定了。考試時兩個都會,比只會一個安心。
五小陷阱:一句話的「否定」
說謊=那句話是假的。所以你要會寫否定。很多人會把否定寫成「相反到底」,這是最常見的失分點。
| 原句 | ✅ 正確的否定 | ❌ 寫錯的版本 |
|---|---|---|
| 不是我做的 | 就是我做的 | — |
| 全班都及格了 | 至少有一個人沒及格 | 全班都沒及格 |
| 至少有一個人遲到 | 沒有人遲到 | 只有一個人遲到 |
| 我和他都有去 | 我沒去或他沒去(至少一個沒去) | 我和他都沒去 |
| 他一定會來 | 他有可能不會來 | 他一定不會來 |
「都」的相反是「至少一個不」;「至少一個」的相反是「一個都沒有」。否定只要剛好推翻原句就好,不用推到最極端。
六換一個條件,答案就會變
把第 2 題的三句話完全不動,只把條件改成「只有一人說謊」,再算一次:
| 假設 | 真話幾句 | 說謊幾人 | 只有一人說謊? |
|---|---|---|---|
| 甲打破的 | 2 | 1 | ✅ 合 |
| 乙打破的 | 2 | 1 | ✅ 合 |
| 丙打破的 | 1 | 2 | ❌ 不合 |
這時候有兩個假設活下來,答案就不唯一了——這種情況的正解就是「條件不足,無法有效判斷」。所以選項 (D) 不是來亂的,它真的有可能是答案,只是這一題剛好不是。
✍️ 練習題
A. 選擇題
每題都請先在紙上列表:三種假設 × 每句話的真假。不要用猜的。
冰箱裡的蛋糕被吃掉了,一定是甲、乙、丙其中一人吃的。甲:「是丙吃的。」乙:「我沒吃。」丙:「甲說謊。」已知只有一人說真話,是誰吃的?
假設是甲吃:甲假、乙真、丙真 → 2 句真話 ❌
假設是乙吃:甲假、乙假、丙真 → 1 句真話 ✅
假設是丙吃:甲真、乙真、丙假 → 2 句真話 ❌
只有「乙吃的」活下來,答案是乙。(丙說「甲說謊」,只要甲的話是假的,丙就說了真話。)
甲:「是乙做的。」乙:「不是我做的。」丙:「不是我做的。」哪兩句話一定是一真一假(矛盾對)?
甲說「乙是犯人」、乙說「乙不是犯人」,講的是同一件事的正反面,不可能同時真、也不可能同時假,所以是矛盾對。乙和丙講的是不同的人,可以同時為真(犯人是甲的時候)。
「全班同學都及格了」這句話是假的。可以確定什麼?
「都及格」只要破一個洞就變成假的,所以否定是「至少有一個人沒及格」。可能是 1 個、也可能是全部,但我們只能確定「至少一個」。
同樣是甲:「是乙做的。」乙:「不是我做的。」丙:「不是我做的。」但條件改成「只有一人說謊」,犯人是誰?
是甲做的 → 真話 2 句、說謊 1 人 ✅;是乙做的 → 真話 2 句、說謊 1 人 ✅;是丙做的 → 真話 1 句、說謊 2 人 ❌。
有兩個假設都活下來,所以無法判斷。同樣三句話,換一個條件答案就不同——這就是為什麼一定要老實列表。
已知三人中只有一人說真話,而且甲、乙兩人的話是一組矛盾對。可以立刻確定什麼?
矛盾對一定一真一假,所以唯一的那句真話已經被甲、乙用掉了。剩下的丙只能說謊。至於甲和乙誰真誰假,還要再看別的條件。
四個人中有一人打破窗戶。甲:「是乙做的。」乙:「是丙做的。」丙:「甲說的是真的。」丁:「不是我做的。」已知只有一人說真話,是誰做的?
先看丙:丙說「甲說的是真的」,所以丙和甲永遠同真同假。
是甲:甲假、乙假、丙假(跟著甲)、丁真 → 1 句真話 ✅
是乙:甲真、乙假、丙真、丁真 → 3 ❌
是丙:甲假、乙真、丙假、丁真 → 2 ❌
是丁:甲假、乙假、丙假、丁假 → 0 ❌
只有「甲做的」活下來,答案是甲。人一多,先找出「同真同假」或「一真一假」的兩句話,算起來會快很多。
島上只有兩種人:誠實者永遠說真話,說謊者永遠說假話。A 對你說:「我們兩個(A 和 B)都是說謊者。」A 和 B 分別是什麼人?
先假設 A 是誠實者:那他的話是真的 → 他自己是說謊者 → 自相矛盾 ❌。所以 A 是說謊者。
A 是說謊者 → 他的話是假的 → 「兩人都是說謊者」不成立 → 至少一個不是。既然 A 是說謊者,那個不是的就只能是 B,所以 B 是誠實者。
同一座島上,C 說:「我是說謊者。」C 是什麼人?
如果 C 是誠實者 → 他說的是真的 → 他是說謊者,矛盾。
如果 C 是說謊者 → 他說的是假的 → 他不是說謊者,還是矛盾。
兩種都矛盾,所以這句話在這座島上說不出口。這是有名的「說謊者悖論」。
甲:「是乙做的。」乙:「是丙做的。」丙:「不是我做的。」已知恰好兩人說真話,是誰做的?
是甲:假、假、真 → 1 ❌ 是乙:真、假、真 → 2 ✅ 是丙:假、真、假 → 1 ❌
只有「乙做的」符合,答案是乙。乙自己說了假話(想推給丙),但真相就是乙。
甲、乙、丙三人中恰有兩人是說謊者。甲說:「乙是說謊者。」乙說:「丙是說謊者。」丙說:「甲和乙都是說謊者。」誰說的是真話?
三人中只有一個誠實者,分三種情況檢查:
只有甲誠實 → 甲的話真,乙是說謊者 ✓;但乙說「丙是說謊者」,此時丙的確是說謊者,乙就說了真話,和「乙是說謊者」衝突 ❌。
只有乙誠實 → 甲說「乙是說謊者」為假 ✓(甲是說謊者);乙說「丙是說謊者」為真 ✓;丙說「甲和乙都是說謊者」,乙其實誠實,所以這句是假的 ✓(丙是說謊者)。全部相符 ✅
只有丙誠實 → 丙的話真代表甲、乙都說謊;但甲說「乙是說謊者」剛好為真,矛盾 ❌。
答案是乙。這種題的檢查重點是:每個人的身分,要和他那句話的真假完全一致。
為什麼「只有一人說實話」這個條件特別好用?
它同時說了「至少一人」和「至多一人」,把真話數量釘死成 1。有了這個數字,每個假設都能算出真話幾句,再比對就好。它本身不指名任何人。
用假設法算完一題之後,發現三個假設都符合條件。這代表什麼?
推理題要的是唯一解。全部活下來 → 條件不足;全部出局 → 一定有一句話翻譯錯了,回頭檢查。這兩種檢查,比算得快更重要。
B. 動手寫
把第 2 題的表格自己寫一次
不要看上面的解析,自己寫出三種假設下每句話的真假,以及真話的數量。
甲做的 → 甲假、乙真、丙真=2 句真話 ❌
乙做的 → 甲真、乙假、丙真=2 句真話 ❌
丙做的 → 甲假、乙真、丙假=1 句真話 ✅
答案:丙。
找出矛盾對
四個人說:甲「是丁做的」、乙「不是我做的」、丙「甲說的是真的」、丁「不是我做的」。
哪兩句是矛盾對?哪兩句一定同真同假?
矛盾對:甲「是丁做的」和丁「不是我做的」——講同一件事的正反面,必定一真一假。
同真同假:甲和丙——丙說「甲說的是真的」,所以丙的真假永遠跟著甲跑。
找到這兩種關係,題目通常就剩下一兩種情況要檢查了。
自己出一題
設計一題「三人中只有一人說實話」的題目,答案是甲。寫完自己用表格檢查一次,確定答案唯一。
例:甲「不是我做的」、乙「是丙做的」、丙「不是我做的」,只有一人說實話。
甲做的 → 假、假、真=1 ✅ 乙做的 → 真、假、真=2 ❌ 丙做的 → 真、真、假=2 ❌
只有「甲做的」活下來,答案唯一。
出題其實比解題難:你要同時保證有解(至少一種情況符合)和唯一(只有一種情況符合)。第一次寫常常會出現兩個答案,改一句話再算一次就好——這個過程本身就是最好的練習。