有一个比较有趣的问题:
问题描述:
有一个灵魂,站在两扇门前面,一扇门会通向天堂,一扇门会通向地狱,但是这个灵魂不知道哪一扇面会通向天堂,这时候他的面前有一个恶魔和一个天使,他们之中有一个人只会说真话,一个人只会说假话,但是这个灵魂不知道谁会说真话谁会说假话。而且此时他只有一次提问的机会,请问如何提问才能保证这个灵魂上天堂。
思路:
这个灵魂知道什么,不知道什么:
两扇门,有一扇通往天堂,另一扇通往地狱,但是他不知道具体是哪一扇门可以通往天堂。
一个天使,一个恶魔,一个只会说真话一个只会说假话,但是他不知道谁在说谎。
解答:
于是答案可以这样设计,随便提问恶魔和天使其中的一个,
问题是:“如果我问另一个人,我得到的答案是什么?”。
这时候就相当于做了一个与运算,就是不管被提问的这个人是在说真话还是在说谎话都不要紧,如果他说的是只会说真话的人(1),则此时他会告诉你说假话的那个人的答案(0),于是你得到的结果就是通向地狱的那扇门(1&0=0),如果他是只会说假话的那个人(0),他会告诉你说真话的那个人的答案(1)的相反的答案(!1=0),于是你得到的结果同样就是通向地狱的那扇门(0&(!1)=0)。
所以不管最后的到的答案是什么,肯定是通往地狱的那扇,于是那个灵魂就选另一扇门就可以了。