if文を使いこなそう!
問題
あなたは警官です。aとb二人の容疑者の取り調べをしています。
どちらも証言がTrue、またはFalseであればその証言はTrueです。
しかしどちらかがFalseでTrueであればその証言はFalse、と出力するメソッドを定義しなさい。
呼び出しは以下のように行う
police_trouble(a, b)
例
police_trouble(true, false) → False
police_trouble(false, false) → True
police_trouble(true, true) → True
上記のような問題があったとしましょう。このようなif文はどのように実装すれば良いでしょうか。
私は最初下記のようなメソッドを実装しました。
def police_trouble(a, b)
if (a == true) && (b == true)
puts "True"
elsif (a == false) && (b == false)
puts "True"
else
puts "False"
end
end
a = true
b = true
police_trouble(a, b)
aとbがtrueならTrue
aとbがfalseならTrue
問題の指示通り実装ができていますね。
しかし、これよりももっとシンプルな方法があります。
今回の問題を置き換えて考えると、aとbの値が一致していればTrueと出力すれば良いと言うことになります。
そのため下記のような書き方ができます。
def police_trouble(a, b)
if a && b || !a && !b
puts "True"
else
puts "False"
end
end
a = true
b = true
police_trouble(a, b)
aとbが一致していればTrue、それ以外ならFalseと返すプログラムですね。
考え方を整理して、シンプルに書くことを磨いていきたいです。