有趣的邏輯問題:是誰在說謊

開心的是期中考接近尾聲,而且今天也是我的生日,更開心的是老天爺待我很好,放我一天假沒給我排考。今天,在網路上逛啊逛,看到了一些判斷說謊的邏輯問題,雖然之前就曾看過,但不管再看多少遍都還是覺得很有趣。也想到好幾天沒寫東西了,就貼上來讓大伙一同分享吧!準備好接受考驗了嗎? Ready? Go!

第一題:

A 說B 在說謊,B 說 C 在說謊,C 說 A、B 都在說謊。請問到底誰在說謊?



第二題:

現在審問四名竊賊嫌疑犯。已知當中有一名是竊賊,還知道這四個人不是誠實就是說謊,請根據他們回答問題的結果中,判斷誰是竊賊。

甲說:『乙沒有偷,是丁偷的。』
乙說:『我沒有偷,是丙偷的。』
丙說:『甲沒有偷,是乙偷的。』
丁說:『我沒有偷。』



解答:一:只有 B 說真話。二:乙是竊賊。

留言

  1. 可以貼個 推論的過程嗎?

    回覆刪除
    回覆
    1. 第一題其實很簡單,
      1. 若A說實話,則B說謊(B說C說謊),即C說得是真的,即AB皆說謊,這與A說真話這個假設互為矛盾,故不成立

      2. 若B說實話,則C說謊, C說謊也就是AB至少有一人說的是真話,與B說實話之假設相符,可成立

      3.若C說實話,則A B二人皆為假,但A說B說謊,若A說謊則B為真,但B若為真則C為假,與假設不符,C也不是正確答案(因為A不對已經不成立了,B也不用證明了)

      總結:B說真話

      刪除
  2. 其實這些原題目是要寫程式來解的,我大概講一下其推論流程。

    第一題的答案就在以下三個條件同時成立時:

    1. 若 A 説真話,則 B 就是說假話;反之,B 為真,A 就為假。
    代數表達法:(A=1 And B=0) Or (A=0 And B=1)

    2. 若 B 說真話,C 就是說假話;反之,C 為真,B 就為假。
    代數表達法:(B=1 And C=0) Or (B=0 And C=1)

    3. 若 C 說真話,A、B就都說假話;反之,A、B 如果有人說真話,C 就為假。
    代數表達法:(C=1 And A=0 And B=0) Or (C=0 And A=1 Or B=1)

    三個人真假話的排列組合是3!共六種,分別代入判別,找到符合三個條件的就是答案:A=0, B=1, C=0。


    第二題可用解聯立方程式的方式來解。

    因為這四個人不是誠實就是說謊,所以甲、乙、丙說的兩個人之中,一定有一個是竊賊,可用三個方程式表示:

    乙 + 丁 = 1
    乙 + 丙 = 1
    甲 + 乙 = 1

    而四個人之中有一名是竊賊,所以四人的關係就是:

    甲 + 乙 + 丙 + 丁 = 1

    用這四條式子解聯立方程式,找出誰等於 1 就是答案了。

    回覆刪除
  3. 恩~ 謝謝你的解答~
    不過 我得思考一下(邏輯不太好..)

    回覆刪除
  4. 作者已經移除這則留言。

    回覆刪除
  5. 高中一年級數學就在教邏輯學。

    回覆刪除
  6. 請問第一題的判別代人是什麼意思?

    回覆刪除

張貼留言

這個網誌中的熱門文章

Web 技術中的 Session 是什麼?

淺談 USB 通訊架構之定義(一)

淺談 USB 通訊架構之定義(二)

Reverse SSH Tunnel 反向打洞實錄