[Ruby]dorill70

プログラミング

問題

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

ワンライナーで書くと行は少なくなりますが、横に長くなってしまいます。どっちが良いのでしょうか。本物の現場ではどちらを採用しているのでしょうか?

タイトルとURLをコピーしました