#はじめに
フロント部分の復習やオリジナルアプリ作成に学習時間を取ってますが、毎朝しっかり問題を解いています!
#問題
メソッドに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メソッドを使う。
.rb
num = 3.abs
#=> 3
num = -3.abs
#=> 3
#解答
.rb
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それぞれの差分を算出し、絶対値に変換します。
a
とb
を計算したx
とb
とc
を計算したz
の条件分岐として
x == 2 && z >= 3
「aとbの差が2」であり、かつ「bとcとの数値の差が3以上」を検討しています。
同様に y == 2 && z >= 3
で「aとcの差が2」であり、かつ「bとcとの数値の差が3以上」を検討しています。
省略したバージョンも記述できます。
.rb
if (x == 2 && z >= 3) || (y == 2 && z >= 3)
puts "True"
else
puts "False"
end
xが2と等しい時かつzが3以上の時またはyが2と等しい時かつzが3以上の時という条件式を作る事ができます。