LoginSignup
0
0

More than 1 year has passed since last update.

Ruby 問題12 if,else問題

Posted at

はじめに

フロント部分の復習やオリジナルアプリ作成に学習時間を取ってますが、毎朝しっかり問題を解いています!

問題

メソッドに3つの整数a b cを与えます。
・「aとbの差が2」または「aとcの差が2」であり、かつ「bとcとの数値の差が3以上」の場合はTrue
・それ以外はFalse
と出力するメソッドを作って下さい。

close_far(1, 3, 10) → True
close_far(1, 2, 3) → False
close_far(4, 2, 5) → True

ヒント

返り値を絶対値(この場合は正の整数)に変換する際はabsメソッドを使う。

num = 3.abs
#=> 3

num = -3.abs
#=> 3

解答

def close_far(a,b,c)
  x = (a-b).abs
  y = (a-c).abs
  z = (b-c).abs

  if x == 2 && z >= 3
    puts "True"
  elsif y == 2 && z >= 3
    puts "True"
  else
    puts "False"
  end
end

ポイントは絶対値です。

abcそれぞれの差分を算出し、絶対値に変換します。

abを計算したxbcを計算したzの条件分岐として
x == 2 && z >= 3「aとbの差が2」であり、かつ「bとcとの数値の差が3以上」を検討しています。

同様に y == 2 && z >= 3で「aとcの差が2」であり、かつ「bとcとの数値の差が3以上」を検討しています。

省略したバージョンも記述できます。

if (x == 2 && z >= 3) || (y == 2 && z >= 3)
  puts "True"
else
  puts "False"
end

xが2と等しい時かつzが3以上の時またはyが2と等しい時かつzが3以上の時という条件式を作る事ができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0