18/12/06 17:09:52.65 E+1fMA/x.net
# 正直者は嘘をつかないが、嘘つきはいつも嘘をつくとして
# 次の証言から嘘つきを特定せよ。
# A「Bは正直者だ」
# B「Cは嘘つきだ」
# c「Aは...」と語ったが質問者が述語を聞き取れずBが補足発言、
# B「Cは『Aは嘘つき』と言った」
# 次に、嘘つきは気まぐれで嘘も本当もいう場合に嘘つきの可能性の組み合わせを示せ。
# all possible combination
dat=as.matrix(expand.grid(1:0,1:0,1:0)) # all possilbe combination
colnames(dat)=LETTERS[1:3]
# compatibility of honest answer
compati.H <- function(i,x){ # i index of honest, x: possible combination
switch(i, # i= 1,2,or,3
# if A is honest, B should be honest, compatible?
ans <- x[2]==1, # i=1 when A is honest
# if B is honest,C is a liar thereby A should be honest. compatible?
ans <- x[3]==0 & x[1]==1,# i=2 when B is honest
ans <- TRUE) # i=3, compatible due to no commitment by C
return(ans)
}
# compatibility of strict liar's answer
compati.L <- function(i,x){ # i index of liar, x: possible combination
switch(i,
ans <- x[2]==0, # i=1 when A is a strict liar
ans <- x[3]==1 & x[1]==1,# i=2 when B is a strict liar, A is honest whether B is honest or not
ans <- TRUE) # when i=3 compatible
return(ans)
}