You are in a popular tourist town in the land of Liars and Knights. You happen to overhear a conversation another tourist is having with three of the locals: Alex, Bert and Carl. Each of the three could be a knight, a knave or a liar. You know that for each question the tourist asks, Alex, Bert and Carl each give one response, but you don't know who said what. The conversation is as follows:
 What type are each of you?
 I am a knight.
 I am a knave.
 I am a liar.
 How many of you are the same type?
 We are all the same type.
 We are all different types.
 Exactly two of us are the same type.
 What type is Alex?
 A knave.
 A liar.
 Different from Bert.
Can you determine which type Alex, Bert and Carl are?
(In reply to
solution by Charlie)
'1=kt:2=L:3=kv,start w/lie;4=kv,start w/truth
CLS
FOR a = 1 TO 4
FOR b = 1 TO 4
FOR c = 1 TO 4
REDIM tct(4)
tct(a) = tct(a) + 1
tct(b) = tct(b) + 1
tct(c) = tct(c) + 1
good = 0
IF tct(1) = 1 AND tct(3) = 1 AND (tct(2) = 1 OR tct(4) = 1) THEN good = 1
IF tct(2) = 2 AND tct(3) = 1 THEN good = 1
IF tct(2) = 1 AND tct(3) = 1 AND tct(4) = 1 THEN good = 1
IF tct(3) = 2 AND (tct(2) = 1 OR tct(4) = 1) THEN good = 1
IF good THEN
PRINT a; b; c;
trct = 0
IF a = 1 OR a = 3 THEN trct = trct + 1
IF b = 1 OR b = 3 THEN trct = trct + 1
IF c = 1 OR c = 3 THEN trct = trct + 1
IF trct = 1 THEN
PRINT " *"
trct1 = 0
IF a = 1 OR a = 4 THEN trct1 = trct1 + 1
IF b = 1 OR b = 4 THEN trct1 = trct1 + 1
IF c = 1 OR c = 4 THEN trct1 = trct1 + 1
trct2 = 0
IF a >= 3 THEN trct2 = trct2 + 1
IF a = 2 THEN trct2 = trct2 + 1
IF a = 1 AND b <> 1 OR a = 2 AND b <> 2 OR (a = 3 OR a = 4) AND b <> 3 AND b <> 4 THEN trct2 = trct2 + 1
IF trct1 = trct2 THEN
PRINT a; b; c; "*****"
END IF
ELSE
PRINT
END IF
END IF
NEXT
NEXT
NEXT
1 2 3
1 3 2
1 3 4
1 4 3
2 1 3
2 2 3 *
2 3 1
2 3 2 *
2 3 3
2 3 4 *
2 4 3 *
3 1 2
3 1 4
3 2 1
3 2 2 *
3 2 3
3 2 4 *
3 3 2
3 3 4
3 4 1
3 4 2 *
3 4 2 *****
3 4 3
4 1 3
4 2 3 *
4 3 1
4 3 2 *
4 3 2 *****
4 3 3

Posted by Charlie
on 20070517 15:39:39 