問題
以下の要件を満たす police_troubleメソッドを実装しましょう。
あなたは警官です。aとb二人の容疑者の取り調べをしています。このとき、次のルールで証言の真偽判定を行います。
※問題文で登場したaとb二人の容疑者は、今回実装するpolice_troubleメソッドの引数として取り扱っていきます。
第一引数aと第二引数bどちらの証言も真(true)であれば、Trueを出力すること
第一引数aと第二引数bどちらの証言も偽(false)であれば、Trueを出力すること
第一引数aと第二引数bで証言の真偽が一致しない場合であれば、Falseを出力すること
雛形
def police_trouble(a, b)
# ここに条件式を記述する
end
# 呼び出し例
police_trouble(true, true)
police_trouble(false, false)
police_trouble(true, false)
出力例
police_trouble(true, true) → True
police_trouble(false, false) → True
police_trouble(true, false) → False
論理演算子
今回のように2つ以上の条件(例 aはbと等しい、かつcはdより大きい 等)を組み合わせる場合は以下のような論理演算子を使う。
# aもbもtrueの場合にtrue
a && b
# aかbのどちらかがtrueの場合にtrue
a || b
# aがtrueの場合にfalse、aがfalseの場合にtrue
!a
解答
def police_trouble(a, b)
if (a && b) || (!a && !b)
puts "True"
else
puts "False"
end
end
police_trouble(true, true)
police_trouble(false, false)
police_trouble(true, false)
if文で冒頭で述べた条件に当てはまるように記述。
1番目どっちの証言もTrueと言うなら(a && b)
police_trouble(true, true) → True
2番目の条件は1番目の条件と逆でaもbもfalseと言う。
!を付け加えればFalseの場合にTrueと返すので(!a && !b)
police_trouble(false, false)→ True
3番目はどっちの証言も一致しない、aがTrueと言ってbがFalseと言う。
||を使って1番目と2番目の条件を組み合わせているがこれはどちらか条件が一致すればTrueという事だがどちらにも当てはまらないのでFalseが返ってくる。
police_trouble(true, false) → False