今取り組んだものは
正の整数を入力して、それが10の倍数との差が2以下であるならばTrue、そうでないならFalseを出力するというものだった。
以下が自分の回答である。
def near_ten(num)
basis = (num + 5) / 10 * 10
difference = (num - basis).abs
if difference <= 2
puts "True"
else
puts "False"
end
end
まずnum
に一番近い10の倍数をbasis
とする。
basis
にふさわしい数字を計算しているのが2行目。
basis = (num + 5) / 10 * 10
例として、15~24までの整数だと一番近い10の倍数は20であるから、20を基準にしたい。
この整数たちにそれぞれ5を加えると、20~29になる。
この整数たちは10の位が2なので、それぞれ/ 10 * 10
を行うと20が出てきて、基準にしたい数字となる。
他の整数でも同じようにうまくいく。
これでbasis
の部分は終了。
次に、元々の数字とこの基準との差を計算している。
num - basis
このままでは差がマイナスになることもあるので、絶対値を出すメソッドを使っている。
(num - basis).abs
あとはこれを代入
difference = (num - basis).abs
こうして求めた差であるdifference
が2以下であれば良いからそれを判定して終了。
if difference <= 2
puts "True"
else
puts "False"
end