Welcome back to this month’s mathematical riddle (and can you believe it’s almost December)! Today we have a neat logic puzzle with an amusing twist on the traditional knight-or-knave problems that are popular in the literature.
This month’s riddle is actually fairly well-known, but was communicated to me by C. Cook. As always, if you have a nice mathematical riddle that you would like to share, then let us know and we’ll see if we can post it!
You, an intrepid explorer, have found a mystical fortune-telling shrine. This shrine is particularly mystical because it has three mystical oracles (all in the same room), making it manifestly superior to other run-of-the-mill mystical shrines, which have only one oracle. Complicating matters further, however, is the fact that not all of the oracles in the shrine tell the truth. In fact, exactly one oracle always tells the truth, exactly one oracle always lies, and exactly one oracle always answers randomly.
Your job is to determine, using no more than three true-or-false questions, which oracle is which. Each question must be addressed to a single oracle, and may (if you wish) be about the other oracles in the room. You are required to ask only questions which have a definite true-or-false answer, even if you suspect the oracle to whom you are addressing the question is the random oracle. (Note that a question such as “would Oracle A say ‘true’ to such-and-such a question” would thus be allowed only if you were certain that Oracle A was not the random oracle.)
It is not required that each of the three questions be asked to a different oracle (so you could ask the same oracle all three questions). Successive questions may of course be based on the answers to previous questions.
Can you come up with a set of three questions that will allow you to determine the identity of the oracles? Give your answers in the comments below!
Label the oracles A, B, C.
Question #1 (to A): Is at least one of these things true: B is the lying oracle, C is the truth-telling oracle?
Question #2 (to B if answer was yes, to C if answer was no): Are you the oracle who answers randomly?
Question #3 (to same as #2): Is A the oracle who answers randomly?
Question 1 allows us to conclude that B or C is not the random oracle (depending on the answer). Knowing this, question 2 will positively ID this oracle as the liar or truth-teller. Knowing this, question 3 will let us deduce the identity of A, which solves the puzzle.
Great answer!