iT邦幫忙

7

IQ益智題- 101隻天使與惡魔,找出一隻誠實的天使

哈囉,大家好,
身為程式愛好者,
邏輯能力是相當重要的,
這邊小馬跟大家分享一道有趣的IQ題

101隻天使與惡魔

有一天,不知道為什麼,你穿越到一片異世界的森林,
那邊住著101個異世界居民和平的共同生活著,
異世界居民有兩種族群:

  • 天使: 非常誠實,永遠會說真話
  • 惡魔: 看心情說話,有時說謊有時說真話

他們彼此知道身分,
不過對於穿越到異世界的你來說,
你無法從異世界居民的外貌中分別他們是天使還是惡魔,
他們都有純白羽翼,乍看之下,你大概覺得每個居民都是天使

你想要找到一個天使問一些異世界的情報,
不知道為什麼,
你知道101個森林居民中,有過半都是天使 (這是重要的線索)

那麼要怎麼找到一個天使呢?
你可以透過的方式推理他們的身份,
譬如說找一個居民(姑且稱為A好了),
問A說另一個居民B他的身份是天使還是惡魔?
你得到的答案一定是「天使」或「惡魔」

問的方式一定是找個居民問另外一個居民的身份,
如果你直接問他說:「你是天使還是惡魔?」,
不論是天使還是惡魔都會告訴你他是「天使」,
不然惡魔說自己是惡魔的話等同於直接暴露直己的身份,
惡魔也沒有這麼笨的

那麼問題來了,你最多只能問101次,
要怎麼保證可以找到一個天使?

歡迎邏輯愛好者一同留言討論



(2020/4/28補充) 提示來囉

嗨嗨,大家好,沒想到趣味問題的討論還蠻熱絡的,這邊小馬要釋放一些線索提示給大家囉:

  1. (不算什麼提示,在閒聊~)這題可能難在「惡魔看心情說話,有時說謊有時說真話」吧,如果惡魔永遠說謊,而且沒有限定問題怎麼問,那麼會出乎意料的簡單,你只要問每個居民說「1+1=2 嗎?」回答是的就是天使,回答否的就是惡魔
  2. 居民總數是奇數,而且保證天使比惡魔多是重要線索,缺少條件的話可能解不出來
  3. 雖然惡魔看心情說話,但是如果你抓兩個居民A, B,問A說「B的身份是什麼?」,當A回答B是惡魔時,可以保證A, B至少有一個是惡魔(不可能A, B都是天使)
  4. 承上,既然原本天使比惡魔多,那麼在A說B是惡魔的狀況之下,排除考慮A, B對我們來說是有利的(仍然保證剩下的天使還是比惡魔多)。
  5. 如果我一個問一個(問A說B的身份,問B說C的身份,問C說D的身份... ),每位居民都說下一位居民是天使的話,這樣有什麼結論嗎?

2
陶寶寶
iT邦新手 5 級 ‧ 2020-04-27 13:04:09

我覺得~~每個都是天使沒有惡魔壓~
有過半都是天使,
但沒說惡魔有幾個,
也就是說101個都沒有惡魔的機率在的,
所以我一個問一個到最後每個都回答我天使也是有可能的~

換個角度想我讓他們一個問一個只要說出那個是惡魔的,
本人就一定是天使,
因為天使就是只能說實話。

天使只能說實話可憐...(誤?

看更多先前的回應...收起先前的回應...

有可能101個都是天使,也有可能只有51個天使,
不知道惡魔有幾個,
要想辦法至少找到一隻天使

其實如果問A說「B是天使嗎?」,
A如果說B是惡魔,
那麼有三種可能:

  • A, B都是惡魔
  • A是天使,B是惡魔
  • A是惡魔,B是天使

倒還不知誰是天使呢~

陶寶寶 iT邦新手 5 級 ‧ 2020-04-28 09:07:54 檢舉

納尼尼~
我還以為是類似這種的

話說好奇這是有正確答案的嗎
感覺好像沒有呢~

小馬有答案的哦,在猶豫要不要直接公佈在文章尾巴,因為覺得直接寫出來的話會不會剝奪讀者思考的樂趣,思考中ing...

陶寶寶 iT邦新手 5 級 ‧ 2020-04-28 14:42:29 檢舉

你再等幾天XDDD
我還給我可愛的學妹呢
拿來當作邏輯練習題

哈哈~ 目前決定先在文章尾巴打提示xdd

1
Pondudu
iT邦新手 5 級 ‧ 2020-04-27 17:24:03

小馬哥安安,數理渣來發表淺薄的想法了>"<

天使最少有51個(原則:要過半),最多100個(原則:異世界由兩個種族組成)

要怎麼保證問到天使.....重點應該是"他們彼此知道對方身分"

如果我找三個居民(A B C),
分別問A和C,B是天使還是惡魔?
A、C都回答"天使" =>若B是惡魔 =>ABC全是惡魔
=>若B是天使 =>B為天使,A、C不一定
A、C都回答"惡魔" =>若B是惡魔 =>B為惡魔,A、C不一定
=>若B是天使 =>B為天使,A、C為惡魔
A、C回答"天使"和"惡魔" =>全惡魔 或 兩天使一惡魔 或 一天使兩惡魔 的搭配都有可能

.....羅生門?????

如果我把100居民叫來詢問剩下一個是不是惡魔,
超過一大半都說他不是惡魔....那剩下那個就一定是天使?

想不出來了/images/emoticon/emoticon06.gif

想法蠻不錯的哦,可以單獨找一個居民出來,問剩下100個居民,如果回答天使過半就是「天使」,回答惡魔過半就是「惡魔」,不過運氣不好的話,可能會需要問超過101次~

1
母雞斗Y
iT邦新手 4 級 ‧ 2020-04-28 10:26:04

A是選定的目標,開始詢問其他101個村民
第一個說A是惡魔的記錄成B,因為他會跟A是不同身分
當問完101個村民,結果
A如果天使多,那他就是天使
A如果惡魔多,那B就是天使

不過這是惡魔一定說謊的情況下,如果惡魔看心情就不知道了/images/emoticon/emoticon01.gif

看更多先前的回應...收起先前的回應...

說的很好,如果惡魔一定說謊的話那麼這個方法是可以解的~

博士姐姐回答我:裝成老婆婆看誰會扶妳過馬路/images/emoticon/emoticon37.gif

不過覺得她有給我正確答案了,好強!

你說裝成老婆婆過馬路嗎?哈哈~ (有創意)

1
王昭
iT邦新手 5 級 ‧ 2020-04-28 15:29:54

這題的思路應由刪去排除法
以5個異世界居民A、B、C、D、E舉例
對A開始問AB中是否有惡魔
若A回答有則AB一起刪除(代表AB至少有一隻惡魔),再繼續對C問CD中是否有惡魔
若A回答無則再問B,BC中是否有惡魔
若B回答有則BC一起刪除,再繼續對A問AD中是否有惡魔
若B回答無則再問C,CD中是否有惡魔
以此類推
最後對E問EA中是否有惡魔
因為天使比惡魔多,所以在刪除完的鏈條中,最後一位一定是天使

對對,思路大致上就是這樣,
謝謝分享~
/images/emoticon/emoticon42.gif/images/emoticon/emoticon42.gif

我要留言

立即登入留言