REM 問題 青山学院大学の入試問題です。
REM A,B,Cの3名がいて、正直者が2人、残りの1人が嘘つきである。そして3名とも誰が正直者で、誰が嘘つきかは知っているとする。
REM ここで、正直者とは常に真実をいう人、嘘つきとは常に真実と反対のことをいう人である。このとき、つぎのようなA,B,Cの証言が得られた。
REM Aの証言:Cは嘘つきである。
REM Bの証言:Aは正直者である。
REM Cの証言:Bは嘘つきである。
REM 誰が嘘つきか。
REM 下記のコードを実行すれば 1,1,0という結果が出力されCが嘘つきであることが
REM わかります。
REM------------------- !記号以下は注釈文 , &は次行への継続
FOR A=0 TO 1 !0が嘘つき、1が正直者
FOR B=0 TO 1 !0が嘘つき、1が正直者
FOR C=0 TO 1 !0が嘘つき、1が正直者
IF ((A=0 AND C=1) OR (A=1 AND C=0)) AND &
& (( B=0 AND A=0) OR (B=1 AND A=1)) AND &
& ((C=0 AND B=1) OR (C=1 AND B=0)) AND (A+B+C=2) THEN PRINT A;B;C
NEXT C
NEXT B
NEXT A
END