問題
3つの整数a b cが与えられた場合、bまたはcがaとの差が1で、かつbとcとの数値の差が2以上の場合はTrue。それ以外はFalseを出力しましょう。
自分の回答
def close_far(a, b, c)
if ((b - a).abs == 1 || (c - a).abs == 1) && (b - c).abs >= 2
puts "True"
else
puts "False"
end
end
# ワンライナー
def close_far(a, b, c)
puts ((b - a).abs == 1 || (c - a).abs == 1) && (b - c).abs >= 2 ? "True" : "False"
end
問題文の通りにif文を書いていくだけの問題ですね。
bまたはcがaとの差が1 => ((b – a).abs == 1 || (c – a).abs == 1)
差を見るので、絶対値をとることを忘れないようにしましょう。
かつ、bとcとの数値の差が2以上 => (b – c).abs >= 2
ワンライナーで書くと行は少なくなりますが、横に長くなってしまいます。どっちが良いのでしょうか。本物の現場ではどちらを採用しているのでしょうか?