平成16年春期試験問題 午前問8
問8解説へ
関数eq(X, Y)は,引数XとYの値が等しければ1を返し,異なれば0を返す。整数A,B,C について,eq(eq(A,B),eq(B,C))を呼び出したとき,1が返ってくるための必要十分条件はどれか。
- (A=B かつ B=C) 又は (A≠B かつ B≠C)
- (A=B かつ B=C) 又は (A≠B 又は B≠C)
- (A=B かつ B=C) 又は A=C
- (A=B 又は B=C) 又は A=C
広告
解説
関数eq(X, Y)は、2つの引数が等しい場合に1を返すので、eq(eq(A,B),eq(B,C))の結果が1となるには、eq(A,B)=eq(B,C)であることが条件になります。
eq(A,B)=eq(B,C) となるケースには以下の2つがあります。
eq(A,B)=eq(B,C) となるケースには以下の2つがあります。
- eq(A,B)=eq(B,C)=1
- eq(A,B)=eq(B,C)=0
- A=B=C=1のとき、eq(1,1)=eq(1,1)=1
- A=B=C=0のとき、eq(0,0)=eq(0,0)=1
- A=0、B=1、C=0のとき、eq(0,1)=eq(1,0)=0
- A=1、B=0、C=1のとき、eq(1,0)=eq(0,1)=0
- 正しい。本条件 ⇒ eq(eq(A,B),eq(B,C)) = 1 は真であり、eq(eq(A,B),eq(B,C)) = 1 ⇒ 本条件 も真なので、必要十分条件となります。
- 本条件 ⇒ eq(eq(A,B),eq(B,C)) = 1 は偽(反例:A=1、B=1、C=2)ですが、eq(eq(A,B),eq(B,C)) = 1 ⇒ 本条件 は真なので、必要条件ではありますが十分条件ではありません。
- 本条件 ⇒ eq(eq(A,B),eq(B,C)) = 1 は真ですが、eq(eq(A,B),eq(B,C)) = 1 ⇒ 本条件 は偽(反例:A=1、B=2、C=3)なので、十分条件ではありますが必要条件ではありません。
- 本条件 ⇒ eq(eq(A,B),eq(B,C)) = 1 は偽(反例:A=1、B=1、C=2)ですが、eq(eq(A,B),eq(B,C)) = 1 ⇒ 本条件 も偽(反例:A=1、B=2、C=3)なので、必要条件でも十分条件でもありません。
広告