8 added 2207 characters in body
source | link

This can be done in exactly five questions every time, provided your first question can find you at least one non-normal. Thanks to @Evan for already givingproviding such a question.

Why is this helpful? Because now we could show our non-normal (let's assume it's B) any statement, XOR it with "B is a Knave", and be certain that our answer was the truth. As you can see, if B has to be a Knight or a Knave:

B Knight, XYZ True: [XYZ] XOR [B Knave] is True, so B says "True"
B Knight, XYZ False: [XYZ] XOR [B Knave] is False, so B says "False"
B Knave, XYZ True: [XYZ] XOR [B Knave] is False, so B says "True"
B Knave, XYZ False: [XYZ] XOR [B Knave] is True, so B says "False"

As a result, every statement can split the set of cases exactly in half by making a statement that is true for exactly half of them. And, conveniently, there are exactly 16 cases once we know somebody is not normal - again assuming B is not normal:

(A has 3 choices) x (B has 2 choices) x (C has 3 choices) = 18 possible cases, but Normal Knave Normal and Normal Knight Normal break the rules, so only 16 of those cases are valid.

Thus, our initial question statement leaves us with 16 cases, a second statement (if well chosen) can leave us with 8 cases for each answer, the third leaves us with 4 per set of answers, the fourth leaves us with 2, and the fifth uniquely identifies our situation. Now that we know it's possible, we simply need to find a set of statements that encompasses all possible strings of true/false answers - which, for five consecutive statements is 2^5 = 32 possibilities. I'll be going for simplicity over clarity, so my statements will not all follow the form "XYZ" XOR "Letter is a Knave", though they could be formatted as such if one wished.

I'll create some notation here for efficiency:

This is the [Number]'th statement shown, in the event that the previous sequential answers were the [Truth Values] indicated, it is being shown to [Person], and the statement is [Statement]. If there is a consequenceone can determine all of the roles given a resulting truth value for a statement, I will denote it as:

Where [Single Truth Value] was [Person]'s response to statement [Number] with previous answers of [Truth Values]. Note that a [Consequence]conclusion may show up multiple times by way of different paths.

1A: [A Knight AND B NotNormal] OR [A NotKnight AND B Normal]
2TB: [A Knave OR C Normal] XOR [B Knave]
3TTA: [B Knight] XOR [A Knave]
4TTTB: [C Normal]
5TTTTB: [A Knight]
5TTTTBT - Knight, Knight, Normal
5TTTTBF - Knave, Knight, Normal
5TTTFB: [C Knight]
5TTTFBT - Knave, Knight, Knight
5TTTFBF - Knave, Knight, Knave
4TTFB: [C Normal]
5TTFTB: [C Knight]
5TTFTBT - Knave, Knave, Knave
5TTFTBF - Knave, Knave, Knight
5TTFFB: [A Knight]
5TTFFBT - Knave, Knave, Normal
5TTFFBF - Knight, Knave, Normal
3TFB: [C Knight] XOR [B Knave]
4TFTC: [A Knight]
5TFTTC: [B Knight]
5TFTTCT - Knight, Knight, Knight
5TFTTCF - Knight, Knave, Knight
5TFTFC: [B Knight]
5TFTFCT - Normal, Knight, Knight
5TFTFCF - Normal, Knave, Knight
4TFFC: [A Knight]
5TFFTC: [B Knight]
5TFFTCT - Normal, Knave, Knave
5TFFTCF - Normal, Knight, Knave
5TFFFC: [B Knight]
5TFFFCT - Knight, Knave, Knave
5TFFFCF - Knight, Knight, Knave
2FC: [A Knave OR B Normal] XOR [C Knave]
3FTA: [C Knight] XOR [A Knave]
4FTTC: [B Normal]
5FTTTC: [A Knight]
5FTTTCT - Knight, Normal, Knight
5FTTTCF - Knave, Normal, Knight
5FTTFC: [B Knight]
5FTTFCT - Knave, Knight, Knight
5FTTFCF - Knave, Knave, Knight
4FTFC: [B Normal]
5FTFTC: [B Knight]
5FTFTCT - Knave, Knave, Knave
5FTFTCF - Knave, Knight, Knave
5FTFFC: [A Knight]
5FTFFCT - Knave, Normal, Knave
5FTFFCF - Knight, Normal, Knave
3FFC: [B Knight] XOR [C Knave]
4FFTB: [A Knight]
5FFTTB: [C Knight]
5FFTTBT - Knight, Knight, Knight
5FFTTBF - Knight, Knight, Knave
5FFTFB: [C Knight]
5FFTFBT - Normal, Knight, Knight
5FFTFBF - Normal, Knight, Knave
4FFFB: [A Knight]
5FFFTB: [C Knight]
5FFFTBT - Normal, Knave, Knave
5FFFTBF - Normal, Knave, Knight
5FFFFB: [C Knight]
5FFFFBT - Knight, Knave, Knave
5FFFFBF - Knight, Knave, Knight

To use this list, just show the first statement to the indicated person (in this case, A) - if you get a T, jump to 2T and show that statement to the indicated person, if you get a false, jump to 2F and show that statement to that indicated person instead. Continue on until you get an answer for your fifth statement, all possibilities of which lead to conclusions. You can test the veracity of these conclusions by picking any case (A = ?, B = ?, C = ?) and running through the questions to confirm that you end up at the correct conclusion.

This can be done in exactly five questions every time, provided your first question can find you at least one non-normal. Thanks to @Evan for already giving such a question.

I'll create some notation here for efficiency:

This is the [Number]'th statement shown, in the event that the previous sequential answers were the [Truth Values] indicated, it is being shown to [Person], and the statement is [Statement]. If there is a consequence of the resulting truth value, I will denote it as:

Where [Single Truth Value] was [Person]'s response to statement [Number] with previous answers of [Truth Values]. Note that a [Consequence] may show up multiple times by way of different paths.

1A: [A Knight AND B NotNormal] OR [A NotKnight AND B Normal]
2TB: [A Knave OR C Normal] XOR [B Knave]
3TTA: [B Knight] XOR [A Knave]
4TTTB: [C Normal]
5TTTTB: [A Knight]
5TTTTBT - Knight, Knight, Normal
5TTTTBF - Knave, Knight, Normal
5TTTFB: [C Knight]
5TTTFBT - Knave, Knight, Knight
5TTTFBF - Knave, Knight, Knave
4TTFB: [C Normal]
5TTFTB: [C Knight]
5TTFTBT - Knave, Knave, Knave
5TTFTBF - Knave, Knave, Knight
5TTFFB: [A Knight]
5TTFFBT - Knave, Knave, Normal
5TTFFBF - Knight, Knave, Normal
3TFB: [C Knight] XOR [B Knave]
4TFTC: [A Knight]
5TFTTC: [B Knight]
5TFTTCT - Knight, Knight, Knight
5TFTTCF - Knight, Knave, Knight
5TFTFC: [B Knight]
5TFTFCT - Normal, Knight, Knight
5TFTFCF - Normal, Knave, Knight
4TFFC: [A Knight]
5TFFTC: [B Knight]
5TFFTCT - Normal, Knave, Knave
5TFFTCF - Normal, Knight, Knave
5TFFFC: [B Knight]
5TFFFCT - Knight, Knave, Knave
5TFFFCF - Knight, Knight, Knave
2FC: [A Knave OR B Normal] XOR [C Knave]
3FTA: [C Knight] XOR [A Knave]
4FTTC: [B Normal]
5FTTTC: [A Knight]
5FTTTCT - Knight, Normal, Knight
5FTTTCF - Knave, Normal, Knight
5FTTFC: [B Knight]
5FTTFCT - Knave, Knight, Knight
5FTTFCF - Knave, Knave, Knight
4FTFC: [B Normal]
5FTFTC: [B Knight]
5FTFTCT - Knave, Knave, Knave
5FTFTCF - Knave, Knight, Knave
5FTFFC: [A Knight]
5FTFFCT - Knave, Normal, Knave
5FTFFCF - Knight, Normal, Knave
3FFC: [B Knight] XOR [C Knave]
4FFTB: [A Knight]
5FFTTB: [C Knight]
5FFTTBT - Knight, Knight, Knight
5FFTTBF - Knight, Knight, Knave
5FFTFB: [C Knight]
5FFTFBT - Normal, Knight, Knight
5FFTFBF - Normal, Knight, Knave
4FFFB: [A Knight]
5FFFTB: [C Knight]
5FFFTBT - Normal, Knave, Knave
5FFFTBF - Normal, Knave, Knight
5FFFFB: [C Knight]
5FFFFBT - Knight, Knave, Knave
5FFFFBF - Knight, Knave, Knight

This can be done in exactly five questions every time, provided your first question can find you at least one non-normal. Thanks to @Evan for already providing such a question.

Why is this helpful? Because now we could show our non-normal (let's assume it's B) any statement, XOR it with "B is a Knave", and be certain that our answer was the truth. As you can see, if B has to be a Knight or a Knave:

B Knight, XYZ True: [XYZ] XOR [B Knave] is True, so B says "True"
B Knight, XYZ False: [XYZ] XOR [B Knave] is False, so B says "False"
B Knave, XYZ True: [XYZ] XOR [B Knave] is False, so B says "True"
B Knave, XYZ False: [XYZ] XOR [B Knave] is True, so B says "False"

As a result, every statement can split the set of cases exactly in half by making a statement that is true for exactly half of them. And, conveniently, there are exactly 16 cases once we know somebody is not normal - again assuming B is not normal:

(A has 3 choices) x (B has 2 choices) x (C has 3 choices) = 18 possible cases, but Normal Knave Normal and Normal Knight Normal break the rules, so only 16 of those cases are valid.

Thus, our initial question statement leaves us with 16 cases, a second statement (if well chosen) can leave us with 8 cases for each answer, the third leaves us with 4 per set of answers, the fourth leaves us with 2, and the fifth uniquely identifies our situation. Now that we know it's possible, we simply need to find a set of statements that encompasses all possible strings of true/false answers - which, for five consecutive statements is 2^5 = 32 possibilities. I'll be going for simplicity over clarity, so my statements will not all follow the form "XYZ" XOR "Letter is a Knave", though they could be formatted as such if one wished.

I'll create some notation here for efficiency:

This is the [Number]'th statement shown, in the event that the previous sequential answers were the [Truth Values] indicated, it is being shown to [Person], and the statement is [Statement]. If one can determine all of the roles given a resulting truth value for a statement, I will denote it as:

Where [Single Truth Value] was [Person]'s response to statement [Number] with previous answers of [Truth Values]. Note that a conclusion may show up multiple times by way of different paths.

1A: [A Knight AND B NotNormal] OR [A NotKnight AND B Normal]
2TB: [A Knave OR C Normal] XOR [B Knave]
3TTA: [B Knight] XOR [A Knave]
4TTTB: [C Normal]
5TTTTB: [A Knight]
5TTTTBT - Knight, Knight, Normal
5TTTTBF - Knave, Knight, Normal
5TTTFB: [C Knight]
5TTTFBT - Knave, Knight, Knight
5TTTFBF - Knave, Knight, Knave
4TTFB: [C Normal]
5TTFTB: [C Knight]
5TTFTBT - Knave, Knave, Knave
5TTFTBF - Knave, Knave, Knight
5TTFFB: [A Knight]
5TTFFBT - Knave, Knave, Normal
5TTFFBF - Knight, Knave, Normal
3TFB: [C Knight] XOR [B Knave]
4TFTC: [A Knight]
5TFTTC: [B Knight]
5TFTTCT - Knight, Knight, Knight
5TFTTCF - Knight, Knave, Knight
5TFTFC: [B Knight]
5TFTFCT - Normal, Knight, Knight
5TFTFCF - Normal, Knave, Knight
4TFFC: [A Knight]
5TFFTC: [B Knight]
5TFFTCT - Normal, Knave, Knave
5TFFTCF - Normal, Knight, Knave
5TFFFC: [B Knight]
5TFFFCT - Knight, Knave, Knave
5TFFFCF - Knight, Knight, Knave
2FC: [A Knave OR B Normal] XOR [C Knave]
3FTA: [C Knight] XOR [A Knave]
4FTTC: [B Normal]
5FTTTC: [A Knight]
5FTTTCT - Knight, Normal, Knight
5FTTTCF - Knave, Normal, Knight
5FTTFC: [B Knight]
5FTTFCT - Knave, Knight, Knight
5FTTFCF - Knave, Knave, Knight
4FTFC: [B Normal]
5FTFTC: [B Knight]
5FTFTCT - Knave, Knave, Knave
5FTFTCF - Knave, Knight, Knave
5FTFFC: [A Knight]
5FTFFCT - Knave, Normal, Knave
5FTFFCF - Knight, Normal, Knave
3FFC: [B Knight] XOR [C Knave]
4FFTB: [A Knight]
5FFTTB: [C Knight]
5FFTTBT - Knight, Knight, Knight
5FFTTBF - Knight, Knight, Knave
5FFTFB: [C Knight]
5FFTFBT - Normal, Knight, Knight
5FFTFBF - Normal, Knight, Knave
4FFFB: [A Knight]
5FFFTB: [C Knight]
5FFFTBT - Normal, Knave, Knave
5FFFTBF - Normal, Knave, Knight
5FFFFB: [C Knight]
5FFFFBT - Knight, Knave, Knave
5FFFFBF - Knight, Knave, Knight

To use this list, just show the first statement to the indicated person (in this case, A) - if you get a T, jump to 2T and show that statement to the indicated person, if you get a false, jump to 2F and show that statement to that indicated person instead. Continue on until you get an answer for your fifth statement, all possibilities of which lead to conclusions. You can test the veracity of these conclusions by picking any case (A = ?, B = ?, C = ?) and running through the questions to confirm that you end up at the correct conclusion.

7 edited body
source | link

1A: [A Knight AND B NotNormal] OR [A NotKnight AND B Normal]
2TB: [A Knave OR C Normal] XOR [B Knave]
3TTA: [B Knight] XOR [A Knave]
4TTTB: [C Normal]
5TTTTB: [A Knight]
5TTTTBT - Knight, Knight, Normal
5TTTTBF - Knave, Knight, Normal
5TTTFB: [C Knight]
5TTTFBT - Knave, Knight, Knight
5TTTFBF - Knave, Knight, Knave
4TTFB: [C Normal]
5TTFTB: [C Knight]
5TTFTBT - Knave, Knave, Knave
5TTFTBF - Knave, Knave, Knight
5TTFFB: [A Knight]
5TTFFBT - Knave, Knave, Normal
5TTFFBF - Knight, Knave, Normal
3TFB: [C Knight] XOR [B Knave]
4TFTC: [A Knight]
5TFTTC: [B Knight]
5TFTTCT - Knight, Knight, Knight
5TFTTCF - Knight, Knave, Knight
5TFTFC: [B Knight]
5TFTFCT - Normal, Knight, Knight
5TFTFCF - Normal, Knave, Knight
4TFFC: [A Knight]
5TFFTC: [B Knight]
5TFFTCT - Normal, Knave, Knave
5TFFTCF - Normal, Knight, Knave
5TFFFC: [B Knight]
5TFFFCT - Knight, Knave, Knave
5TFFFCF - Knight, Knight, Knave
2FC: [A Knave OR B Normal] XOR [C Knave]
3FTA: [C Knight] XOR [A Knave]
4FTTC: [B Normal]
5FTTTC: [A Knight]
5FTTTCT - Knight, Normal, Knight
5FTTTCF - Knave, Normal, Knight
5FTTFC: [B Knight]
5FTTFCT - Knave, Knight, Knight
5FTTFCF - Knave, Knave, Knight
4FTFC: [B Normal]
5TTFTC5FTFTC: [B Knight]
5TTFTCT5FTFTCT - Knave, Knave, Knave
5TTFTCF5FTFTCF - Knave, Knight, Knave
5TTFFC5FTFFC: [A Knight]
5TTFFCT5FTFFCT - Knave, Normal, Knave
5TTFFCF5FTFFCF - Knight, Normal, Knave
3TFC3FFC: [B Knight] XOR [C Knave]
4TFTB4FFTB: [A Knight]
5TFTTB5FFTTB: [C Knight]
5TFTTBT5FFTTBT - Knight, Knight, Knight
5TFTTBF5FFTTBF - Knight, Knight, Knave
5TFTFB5FFTFB: [C Knight]
5TFTFBT5FFTFBT - Normal, Knight, Knight
5TFTFBF5FFTFBF - Normal, Knight, Knave
4TFFB4FFFB: [A Knight]
5TFFTB5FFFTB: [C Knight]
5TFFTBT5FFFTBT - Normal, Knave, Knave
5TFFTBF5FFFTBF - Normal, Knave, Knight
5TFFFB5FFFFB: [C Knight]
5TFFFBT5FFFFBT - Knight, Knave, Knave
5TFFFBF5FFFFBF - Knight, Knave, Knight

1A: [A Knight AND B NotNormal] OR [A NotKnight AND B Normal]
2TB: [A Knave OR C Normal] XOR [B Knave]
3TTA: [B Knight] XOR [A Knave]
4TTTB: [C Normal]
5TTTTB: [A Knight]
5TTTTBT - Knight, Knight, Normal
5TTTTBF - Knave, Knight, Normal
5TTTFB: [C Knight]
5TTTFBT - Knave, Knight, Knight
5TTTFBF - Knave, Knight, Knave
4TTFB: [C Normal]
5TTFTB: [C Knight]
5TTFTBT - Knave, Knave, Knave
5TTFTBF - Knave, Knave, Knight
5TTFFB: [A Knight]
5TTFFBT - Knave, Knave, Normal
5TTFFBF - Knight, Knave, Normal
3TFB: [C Knight] XOR [B Knave]
4TFTC: [A Knight]
5TFTTC: [B Knight]
5TFTTCT - Knight, Knight, Knight
5TFTTCF - Knight, Knave, Knight
5TFTFC: [B Knight]
5TFTFCT - Normal, Knight, Knight
5TFTFCF - Normal, Knave, Knight
4TFFC: [A Knight]
5TFFTC: [B Knight]
5TFFTCT - Normal, Knave, Knave
5TFFTCF - Normal, Knight, Knave
5TFFFC: [B Knight]
5TFFFCT - Knight, Knave, Knave
5TFFFCF - Knight, Knight, Knave
2FC: [A Knave OR B Normal] XOR [C Knave]
3FTA: [C Knight] XOR [A Knave]
4FTTC: [B Normal]
5FTTTC: [A Knight]
5FTTTCT - Knight, Normal, Knight
5FTTTCF - Knave, Normal, Knight
5FTTFC: [B Knight]
5FTTFCT - Knave, Knight, Knight
5FTTFCF - Knave, Knave, Knight
4FTFC: [B Normal]
5TTFTC: [B Knight]
5TTFTCT - Knave, Knave, Knave
5TTFTCF - Knave, Knight, Knave
5TTFFC: [A Knight]
5TTFFCT - Knave, Normal, Knave
5TTFFCF - Knight, Normal, Knave
3TFC: [B Knight] XOR [C Knave]
4TFTB: [A Knight]
5TFTTB: [C Knight]
5TFTTBT - Knight, Knight, Knight
5TFTTBF - Knight, Knight, Knave
5TFTFB: [C Knight]
5TFTFBT - Normal, Knight, Knight
5TFTFBF - Normal, Knight, Knave
4TFFB: [A Knight]
5TFFTB: [C Knight]
5TFFTBT - Normal, Knave, Knave
5TFFTBF - Normal, Knave, Knight
5TFFFB: [C Knight]
5TFFFBT - Knight, Knave, Knave
5TFFFBF - Knight, Knave, Knight

1A: [A Knight AND B NotNormal] OR [A NotKnight AND B Normal]
2TB: [A Knave OR C Normal] XOR [B Knave]
3TTA: [B Knight] XOR [A Knave]
4TTTB: [C Normal]
5TTTTB: [A Knight]
5TTTTBT - Knight, Knight, Normal
5TTTTBF - Knave, Knight, Normal
5TTTFB: [C Knight]
5TTTFBT - Knave, Knight, Knight
5TTTFBF - Knave, Knight, Knave
4TTFB: [C Normal]
5TTFTB: [C Knight]
5TTFTBT - Knave, Knave, Knave
5TTFTBF - Knave, Knave, Knight
5TTFFB: [A Knight]
5TTFFBT - Knave, Knave, Normal
5TTFFBF - Knight, Knave, Normal
3TFB: [C Knight] XOR [B Knave]
4TFTC: [A Knight]
5TFTTC: [B Knight]
5TFTTCT - Knight, Knight, Knight
5TFTTCF - Knight, Knave, Knight
5TFTFC: [B Knight]
5TFTFCT - Normal, Knight, Knight
5TFTFCF - Normal, Knave, Knight
4TFFC: [A Knight]
5TFFTC: [B Knight]
5TFFTCT - Normal, Knave, Knave
5TFFTCF - Normal, Knight, Knave
5TFFFC: [B Knight]
5TFFFCT - Knight, Knave, Knave
5TFFFCF - Knight, Knight, Knave
2FC: [A Knave OR B Normal] XOR [C Knave]
3FTA: [C Knight] XOR [A Knave]
4FTTC: [B Normal]
5FTTTC: [A Knight]
5FTTTCT - Knight, Normal, Knight
5FTTTCF - Knave, Normal, Knight
5FTTFC: [B Knight]
5FTTFCT - Knave, Knight, Knight
5FTTFCF - Knave, Knave, Knight
4FTFC: [B Normal]
5FTFTC: [B Knight]
5FTFTCT - Knave, Knave, Knave
5FTFTCF - Knave, Knight, Knave
5FTFFC: [A Knight]
5FTFFCT - Knave, Normal, Knave
5FTFFCF - Knight, Normal, Knave
3FFC: [B Knight] XOR [C Knave]
4FFTB: [A Knight]
5FFTTB: [C Knight]
5FFTTBT - Knight, Knight, Knight
5FFTTBF - Knight, Knight, Knave
5FFTFB: [C Knight]
5FFTFBT - Normal, Knight, Knight
5FFTFBF - Normal, Knight, Knave
4FFFB: [A Knight]
5FFFTB: [C Knight]
5FFFTBT - Normal, Knave, Knave
5FFFTBF - Normal, Knave, Knight
5FFFFB: [C Knight]
5FFFFBT - Knight, Knave, Knave
5FFFFBF - Knight, Knave, Knight

6 added 295 characters in body
source | link

Example:

A is a Normal

I ask A if A is a Knight, and A says Yes. I ask A if A is a Knight a second time, and A says No. This is recorded as:

1A: [A Knight]
2TA: [A Knight]
2TAF - Normal

Example:

A is a Normal

I ask A if A is a Knight, and A says Yes. I ask A if A is a Knight a second time, and A says No. This is recorded as:

1A: [A Knight]
2TA: [A Knight]
2TAF - Normal

5 added 295 characters in body
source | link
4 added 72 characters in body
source | link
3 deleted 161 characters in body
source | link
2 deleted 161 characters in body
source | link
1
source | link