let p1=(you are true), p2=(red means yes),p3=(any certain assertion), &&=and,||=or, !=not,
F(p3) = (p1 && ((p2 && p3) || (!p2 && !p3))) || (!p1 && ! ((p2 && p3) || (!p2 && !p3)))
if we want to know weather p3 is true from a not random robot, we can ask it like this:
F(p3) is true?
if red, then p3 is true, else p3 is false.
now the solution is easy.
1.ask A:
F(B is not random) is true?
if red,then B is not random,else C is not random.(if A is random, this is also true)
2.we ask the not random robot found in 1, here just let B is the not random robot found in 1:
F(you are true robot) is true?
if red, B is true robot,else, B is false robot.
3.if B is true, ask B:
F(A is false robot) is true?
if B is false, ask B:
F(A is true robot) is true?