用BASIC语言解决逻辑推理题目

Author: 蒲小勤 Date: 1994-01-14

        某地发生了一件凶杀案,凶手是A、B、C、D、E、F6人中之一.L说:凶手非A即B;M说:凶手绝不是C;N说:案发时A、B正在他家。已知L、M、N三人只有一人说对,请问谁是凶手?
        解决这个问题时,关键在于对L、M、N三人的话进行分析,所以应对L、M、N三人的话建立逻辑表达式,然后用穷举法找出符合要求的情况。
        这里逻辑值为真。用-1表示,假用0表示。假设某人是凶手为-1;不是凶手为0,现在可以列出L、M、N三人的逻辑表达式:L=(A=-1AND B=0) OR(A=0 AND B=-1)
        M=(C=0)
        N=(A=0 ANDB=0)
        另外,用L+M+N=-1表示三人中只有一人说对,用A+B+C+D+E+F=-1表示6人中只有一人是凶手。程序如下:
        10 FOR A=-1 TO 0
        20 FOR B=-1 TO 0
        30 FOR C=-1 TO 0
        40 FOR D=-1 TO 0
        50 FOR E=-1 TO 0
        60 FOR F=-1 TO 0
        70 L=(A=-1 AND B=0) OR (A=0 AND B=-1)
        80 M=(C=0)
        90 N=(A=0 AND B=0)
        95 IF L+M+N=-1 AND A+B+C+D+E+F=-1 THEN PRINT :PRINT "A";"B";"C";"D";"E";"F":PRINT A;B;C;D;E;F
        100 NEXT F
        110 NEXT E
        120 NEXT D
        130 NEXT C
        140 NEXT B
        150 NEXT A
        160 END
        运行结果:A B C D E F
        0 0-1 0 0 0
        可见,C就是凶手!
        掌握这种分析方法,你还可以解决更复杂的推理问题,你的电脑就会成为一位“推理专家”!