这题目有点意思~
设三个精灵分别为A、B、C,说真话、说假话、随机精灵分别为T、F、X,“是”和“否”分别为Y、N.
应该分两步来走,第一步是找出谁是X,第二步是辨别哪个是T哪个是F.
第一步:
1.问A:
“B是否会说你是说真话的精灵?”
会有三种结果:
1.1.A不回答.
1.2.A回答Da.
1.3.A回答Ja.
为什么会有第一种呢?因为有可能B就是X,这种情况下,不管A是T还是F,它都不知道B会怎么回答,所以无法回答这个问题.如果是这种情况,那么第一步完成.否则就可以确定B不是X.
2.问C:
“A是否会说你是说真话的精灵?”
同样会有三种结果:
2.1.C不回答.
2.2.C回答Da.
2.3.C回答Ja.
同样,如果是第一种情况,说明A就是X,否则说明B和A都不是X,那么C才是X.第一步完成.
第二步:
经过第一步,一定可以排除掉X,我们就假设被排除掉的是C,其它情况同理可证,然后问最后一个没问过的精灵以下问题
“那个非随机精灵是否会用‘Da’来回答你是否是说真话的精灵?”
假设我们问的,也就是最后一个精灵是B,那么可能有以下情况:
1:A:TB:FDa=YJa=N
2:A:TB:FDa=NJa=Y
3:A:FB:TDa=YJa=N
4:A:FB:TDa=NJa=Y
1:
问题变成“那个非随机精灵是否会用Y来回答你是否是说真话的精灵?”
因为A是T,B是F,所以A必定以N来回答“B是否是说真话的精灵”,而又因为B是F,所以B知道A会回答N,于是B说谎,它会用Y来回答“A是否会用Y来回答你是否是说真话的精灵”,即B回答Da.
2:
问题变成“那个非随机精灵是否会用N来回答你是否是说真话的精灵?”
因为A是T,B是F,所以A必定以N来回答“B是否是说真话的精灵”,而又因为B是F,所以B知道A会回答N,于是B说谎,它会用N来回答“A是否会用N来回答你是否是说真话的精灵”,即B回答Da
3:
问题变成“那个非随机精灵是否会用Y来回答你是否是说真话的精灵?”
因为A是F,B是T,所以A必定以N来回答“B是否是说真话的精灵”,而又因为B是T,所以B知道A会回答N,于是B会用N来回答“A是否会用Y来回答你是否是说真话的精灵”,即B回答Ja.
4:
问题变成“那个非随机精灵是否会用N来回答你是否是说真话的精灵?”
因为A是F,B是T,所以A必定以N来回答“B是否是说真话的精灵”,而又因为B是T,所以B知道A会回答N,于是B会用Y来回答“A是否会用N来回答你是否是说真话的精灵”,即B回答Ja.
综上所述,
如果第二步的问题回答Da,则情况是:
A:TB:FC:X
如果第二步的问题回答Ja,则情况是:
A:FB:TC:X