3つの整数a、b、cが与えられた場合に以下条件を満たすメソッドを作成する問題。
・aとbの差が1かつbとcとの差が2以上の場合「True」と出力する
・aとcの差が1、かつbとcとの差が2以上の場合「True」と出力する
・それ以外は「False」と出力する
出力例:
close_far(1, 2, 10) → True
close_far(1, 2, 3) → False
close_far(4, 1, 3) → True
以下、模範解答。
def close_far(a,b,c)
x = (a-b).abs
y = (a-c).abs
z = (b-c).abs
if (x == 1 && z >= 2)
puts "True"
elsif ( y == 1 && z >= 2)
puts "True"
else
puts "False"
end
end
以下、解説。
close_farメソッドを作成してx,y,zに代入。
def close_far(a,b,c)
x = (a-b).abs
y = (a-c).abs
z = (b-c).abs
xにaとbの差、yにaとcの差、zにbとcの差
ここでabsメソッドを使用。
absメソッドとは対象となる数値に対して絶対値を取得する事ができるメソッド。
正の数に対してはそのままだが負の数に対しては符号を取り除いてくれる。
例えば、-5 → 5のようになる。
そしてif文で条件分岐
if (x == 1 && z >= 2)
puts "True"
elsif ( y == 1 && z >= 2)
puts "True"
else
puts "False"
end
end
x ==(等しい)1 &&(かつ) z >=(以上) 2
でTrueを出力
y ==(等しい)1 &&(かつ) z >=(以上) 2
でTrueを出力
それ以外は
Falseを出力