面试逻辑题:三个精灵说真话假话的判断难题

甲乙丙三个精灵说真话(Da)假话(Ja)和随机选择真假的判断难题

 

 根据已故的麻省理工( MIT )哲学及逻辑家George Boolos,以下的趣味逻辑问题可算是全世界最难的一个。你可以解决这个难题吗?
有甲、乙、丙三个精灵,其中一个只说真话,另外一个只说假话。还有一个随机地决定何时说真话,何时说假话。你可以向这三个精灵发问三条是非题,而 你的任务是从他们的答案找出谁说真话,谁说假话,谁是随机答话。这个难题困难的地方是这些精灵会以“Da”或“Ja”回答,但你并不知道它们的意思,只知 道其中一个字代表“对”,另外一个字代表“错”。你应该问那三条问题呢?


提问如下:

1、 你是说真话的精灵吗?
注意此题会至少有2个精灵的答案是相同的,因为
a 说真话的肯定会到是
b 说假话的因为自己不是说真话的,但不能回答不是,所以也回答是。

OK,
1.1 如果出现了2+1的回答,则那个回答与别人不同的精灵,一定是【随机选择答案的精灵】。
同时,那2个回答多的答案,就是【对】的意思。
  我们继续问
 1.1.1 你是随机决定何时说真话的精灵吗?
    a) 真话的肯定是回答错
    b) 说假话的肯定回答对
  至此,三个精灵和回答的都知道了答案了。

1.2 如果出现了3个相同的答案,那么这个答案一定为【是】
1.2.1 你是随机决定何时说真话的精灵吗?
    a) 说真话的肯定回答【错】
    b) 说假话的肯定回答【对】
   所以,答案肯定是2+1的结果,不可能有三个相同的结果,因为你已经知道什么答案是【对】,则
  如果2个对+1个错,则回答错的那个,一定是【说真话】的精灵
    1.2.1.1 则随便选一个,问【说真话】的精灵,这个是不是说假话的精灵。
       如果是,则那个一定是【说假话】的那个,剩下的一个一定是【随机选择答案】的
       如果否,则那个一定是【随机选择答案】的那个,剩下的一个是【说假话】的。
  如果2个错+1个对,则回答对的那个,一定是【说假话】的精灵。
    1.2.1.2 则随便选一个,问【说假话】的那个,这个是不是说真话的精灵
       如果是,则那个一定是【随机选择答案】的那个,剩下的一个一定是【说真话】的
       如果否,则那个一定是【说真话】的那个,剩下的一个是【随机选择答案】的。


至此,搞定。

 

 

看更多的JAVA面试题和一些逻辑面试题,请到

http://www.java2000.net/f146

 


  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值