# One always tells truth and the other lies, figure which is which in only n tries

Here's a simpler and finalized version of the puzzle, the previous got messy due to its WIP status.

Enter the hall of the twin oracles.

One of the oracles is true, and its purpose is to always tell the truth.

The other oracle is false, and its purpose is to always hide its falsehood.

Both oracles know everything, and answer valid questions with yes or no only.

Both oracles don't answer questions which are invalid or defy their purpose.

Your quest is to figure which is which in the least amount of questions possible.

Disclaimer:

The puzzle is being reverse engineered for a specific requested outcome. So pardon its early immaturity, may you find the maturity to realize that it is an incremental process that requires diversity of input.

Big fat hint:

The solution state involves a valid question which the false oracle cannot neither copy nor reverse the answer of without defying its purpose, so ultimately and inevitably it is cornered into compromising itself by not giving an answer that would compromise it.

• Doesn't the edit just make this unsolvable? If there were any set of questions where the lying oracle's answers differ from the truthful one we would be able to differentiate the two, so wouldn't the lying oracle just give the same answers as the truthful one all the time making it impossible to differentiate the two? Commented Oct 26, 2023 at 19:24
• @GoblinGuide it is solvable, I will post my solution eventually but I am curious as to what other people will think of. Commented Oct 26, 2023 at 21:20
• I agree with @GoblinGuide. The lying oracle is allowed to give the exact same answers that the truth teller would every single time, in which case there is no possible means of distinguishing the two - if you swap the two oracles, you get the same set of answers but the opposite conclusion about who is the liar. Commented Oct 27, 2023 at 15:29
• If the liar failing to copy the true oracle's answer gives away the liar, then the liar can't do that. Whatever the truth teller answered can't possibly mark the truth teller as the liar, because he's not the liar. The liar should just copy that answer and not give himself away. Commented Oct 27, 2023 at 21:17
• I guess that's where I think the current wording falls short. I don't read this as the Liar being forced to give a false answer, ever, merely that they are obligated to hide the fact that they could give a false answer. Commented Oct 27, 2023 at 21:22

You can do it in one step:

"If I asked the other Oracle if he's a liar, what would he say?"

The truth-teller must truthfully tell you the liar would (falsely) answer "no". The liar must (falsely) tell you the truth-teller would answer "yes".

"Is the answer to this question no?"

The truth-teller has no valid answer - answering yes means the answer is not no, but answering no means the answer is no. Any answer is a lie - if the person you ask responds with either a yes or a no, they are a liar.

EDIT:

The question now has no solution. By definition, the liar must conceal their identity and cannot make any statement that will allow you to determine they are the liar. If at any point you figure out who the liar is, the liar must have made, or have been accurately predicted to make, a statement that revealed their identity, which is expressly not allowed. The truth teller has exactly zero alternatives of what to say, since they are bound by the truth - that means it must be the liar's own misstep that gets him caught. Had he simply not done whatever it was that let you figure it out, he'd have been fine. Any "solution" can be nullified by recognizing that whatever the "final question" was that gave you the solution, the liar could have just answered differently.

• I like the alternative, since I think it must be more like what the OP is going for, as "I'm confused" doesn't seem like something a deceitful person would say. Otherwise, the "one step" solution is effectively the same as my answer, but phrased as a single question. Commented Oct 26, 2023 at 19:19
• @MichaelFoster It's not the same - you need to get one oracle to reference the other in order to get a lie about a truth or a truth about a lie, which is always a lie either way. It allows you to know that whatever the answer is, it's false. Your solution of asking one oracle questions about themselves doesn't work. Commented Oct 26, 2023 at 19:35
• Both of those involve the deceitful oracle compromising itself, therefore failing to serve its obligatory purpose. In both cases, it is under no obligation to compromise itself, and it can give you the exact same answer as the truthful oracle in order to facilitate its innate deception. Commented Oct 26, 2023 at 21:25
• Neither oracles have a valid answer for a logically invalid question because the question is technically unspecified, which is undefined behavior, and in practice, the question happens to be a self-reference, which leads to infinite logical recursion, therefore neither of the oracles answer. You broke both oracles and can no longer hope to learn the truth. Just kidding, keep them coming if you got them. Commented Oct 27, 2023 at 5:39
• @dtech This seems unsolvable then. You're saying that by definition, the liar will never say anything that reveals themselves. It's possible that the liar tells the truth in response to every single question, in which case their behavior is absolutely indistinguishable from the truth-teller. I don't see how you can do anything useful when both people respond exactly the same. If you claim person A is the liar, I can conclude person B is the liar based on the exact same reasoning, since they gave the same answers. Commented Oct 27, 2023 at 13:44

Ask both oracles "Does the answer dtech has in mind begin with an a? Does it begin with a b?" etc until you have the first letter of the answer according to each oracle. Then do the same for the 2nd letter, 3rd letter, etc. Eventually one of the two oracles (the truthful one) will have spelled out the method that dtech has in mind for figuring out which oracle is truthful. Then employ the method.

• Gotta LOL about it, the closest thing to a working answer, and its dull brute forge guessing. Slow clap. Commented Oct 28, 2023 at 1:36
• The key question can be formulated in multitude different ways, so as this is, the true oracle can just give you a letter of a different yet valid formulation every time, so you end up with random garbage. You could explicitly specify a single formulation of the key question and that would work theoretically. In practice the number of questions will be limited, so as to not defeat the purpose of playing it. But even if you manage to fit in the limit, taking so many steps to solve it will dilute your end score, thus you never enter the Hall of Champions, where only the sharpest of wit can enter Commented Oct 28, 2023 at 2:32
• Ultimately, having obtained the answer by brutish force and cutting corners doesn't carry the insight of figuring it out. You are thus unable to obtain the wisdom of the oracle, and only managed to foolheadedly succeed at defeating your own purpose to obtain it. Having taken the lesson for granted now prevents you from learning its essence. But you can't even figure that much out, as in the place of the power of wisdom you proudly carry the burden of bare pride. You did figure it out after all. You have beaten the game by beating yourself to your victory. Commented Oct 28, 2023 at 7:56

Both oracles

know what you're going to ask (they're oracles after all), and that the two questions lead to a logical paradox. So you break the truthful oracle. But the deceitful oracle isn't broken, because it can answer both questions by lying at least once. So whichever one still works is the deceitful oracle.

• There's two issues with this. The first is that in neither of the two questions ask a concrete / defined question. In that case, both oracles will give you an undefined / NA answer. But even if that was not the case, you are immediately trapped in an infinite curricular reference. Commented Oct 27, 2023 at 14:49
• I don't think I understand your objections. In what sense is each question not "concrete/defined"? They have unambiguously correct and incorrect potential answers (at least in isolation). And what's a "curricular reference", and how would a question "trap" someone? And who is trapped? Commented Oct 27, 2023 at 15:06
• Circular reference is when you have two values that depend on each other. That's what traps the flow of your logic in an infinite loop. And in your case that a circular reference between two undefined values. Commented Oct 27, 2023 at 15:20
• @dtech It's not clear what you mean by "infinite loop". No computers are involved here. Commented Oct 27, 2023 at 15:38
• That conflicts with the information you you gave earlier that an oracle “breaks” when it cannot answer. (It also conflicts with your previous objection. I’m starting to think that your real objection here is “It wasn’t the answer I was thinking of”.) Commented Oct 27, 2023 at 19:17

One oracle is always truthful, and the other - always deceitful. Based on inquiry in that limited context, is it logically possible to determine which is which in any number of steps?

And because it is an oracle, it knows everything that you know and don't know, hence it has a full proof way to establish when it needs to tell the truth so it can position you for the deceitful strike.

With these two together, I think the answer is simply

No, it's not possible

Proof:

The deceitful oracle knows everything you know, including what questions you intend to ask. They also know the other oracle is the truth-teller, and thus what it will respond to any question. They can prevent you from ever finding out which is which by simply copying what the honest oracle's response would be to any given question.

Suppose there was a series of questions and answers that would identify the deceitful oracle as deceitful. By necessity, at some point in that exchange, the deceitful oracle's answer must differ from the honest oracle's. The deceitful oracle knows they will be identified ahead of time by this series of questions, and thus can avoid being identified by answering the same as the honest oracle, as it is necessary to deceive you. Thus the deceitful oracle will never give an answer that can possibly be used to identify it as deceitful.

However:

There's an implication here that the real goal of determining which oracle is honest is to ask it some oracle-tier question about life, the universe, whatever. If this is really the goal, you can achieve it by simply asking the question to both. If you get the same answer from both, then you know you got honest information. If you get a different answer from each, we have actually have something to work with here and can start differentiating the two. I strongly suspect that any lie at all can be used to differentiate one oracle from another. I am not at all convinced it is even possible for the deceitful oracle to lie to you. However, the question as asked about if we are able to tell one from another, I believe, is simply answered "no".

EDIT:

With all the clarifications and hints, it seems like the bit we are meant to focus on is:
> its purpose is to always hide its falsehood.
The wording here seems very precise. It's not meant simply to tell falsehoods, but to hide its status, and could potentially tell falsehoods in pursuit of that.

With that in mind, is the solution something along the lines of:
Ask the oracle, "Would the other oracle say that you are the liar?"
To my mind, this should simply elicit a "Yes" from both, but maybe you're trying to say that the false oracle can't answer this kind of question, as it is admitting that the other oracle would see it as false?

• Figuring out which oracle is which grants you the Touch of Profound Wisdom skill, which enables you to know everything. The oracles are limited to yes and no answers. Commented Oct 27, 2023 at 18:36
• Your comment seems directed at the last paragraph, but that is more of an addendum speculating on the question rather than a substantial part of the actual answer. Have I overlooked something in my proof? Commented Oct 27, 2023 at 18:58
• The main problem with your proof is it attempts to prove the wrong premise. It is possible to guess which is which in only n tries. Commented Oct 27, 2023 at 19:01
• That's not how proofs work, but I'll bite - what stops the deceitful oracle from answering questions identically to the honest oracle for all n responses? If its goal is to remain hidden it can simply mimic the honest oracle's responses exactly, leaving no way to discern which is which. Is one of my assumptions wrong? Can the oracle not always know what the honest one would say and then say it? Commented Oct 27, 2023 at 19:35
• I understand that a counterexample would give away the solution. It seems from the most recent disclaimer edit that the goal here is to revise the question until there is only one proper solution. Would you be willing to share the answer so we could help find the right wording of the question? I don't think stackexchange is a good place for a dialogue taking place via editting back and forth. In absence of that, would you be willing to clarify exactly how the deceitful oracle's logic works? Commented Oct 27, 2023 at 20:29

I can do it in two questions, I believe:

and then