http://philosophy.hk...gic/hardest.phphttp://en.wikipedia....gic_Puzzle_EverThe solution I read constructs an answer using the if-and-only-if (iff) construct.

The Truth Table for this, if treated as a boolean operator is:

T iff T = T

T iff F = F

F iff T = F

F iff F = T

A iff B is essentially equivalent to the statement:

the truth of A is equal to the truth of B.

Yoruichi's construction has a similar function to this, although it may not be obvious.

I spent some time thinking about this and came up with what I think is a neat way of looking at iff (sometimes called XNOR).

First some properties:

A iff B iff A = B

A iff T = A

A iff F = not A

where T=True, F=False

It is possible to model the True and False gods using iff.

Suppose the question asked is X.

Here is the programming behind them, given inputs D and L where

D = (Da means Yes)

L = (I am the lying god)

Z = D iff (not L) iff X

If Z is true, answer Da otherwise answer Ja

The neat thing about this is that you can use the fact that if you include a statement an even number of times in a sequence of iff's it is effectively removed

i.e. the property that A iff B iff A = B

If X is the statement for which you are asking the truth of, let X itself have the form:

X = D iff (not L) iff Y

where Y is some other question

Substituting this into the programming for the True/False gods:

Z = D iff (not L) iff X = D iff (not L) iff D iff (not L) iff Y

If Z is true, answer Da otherwise answer Ja

becomes equivalent to:

Z = Y

If Y is true, answer Da, otherwise answer Ja

This is all independent of whether Da=Yes or Ja=Yes (i.e. we don't need to know if D is true in order to get rid of D from this algorithm).

Using X = D iff (not L) iff Y, you can derive a truthful answer to any question (Y) that you want regardless of whether you are talking to True or False and regardless of what Da/Ja means.

This is where you use Hint Puzzle 1, to ensure at question 2 you are talking to someone who is not Random.

You can use question 2 to figure out if you are talking to Truth or False:

X = D iff (2+2=4)

Since 2+2=4 is clearly true, the algorithm becomes:

Z = D iff (not L) iff D iff T = not L

If (not L) is true, answer Da otherwise answer Ja

For the last question, figure out who is Random (basically step 2 from Yoruichi's solution).

Anyway, I thought that the analysis above was pretty neat, and actually provides lots of tools for constructing questions to decipher answers from beings obeying logical algorithms.

Congrats for solving the purported hardest logical puzzle (as claimed by someone anyhow).

P.S.

In no-one's solution do we ever learn if Ja=Yes or if Da =Yes