問題
正の整数を入力します。その整数が、10の倍数(10,20,30…)からの差が2以内であるときはTrue、それ以外はFalseと出力するメソッドを作りましょう。
自分の回答
def near_ten(num)
if num % 10 <= 2 || num % 10 >= 8
puts "#{num}はTrue"
else
puts "#{num}はFalse"
end
end
near_ten(11) => True
near_ten(12) => True
near_ten(13) => False
near_ten(17) => False
near_ten(18) => True
near_ten(19) => True
near_ten(20) => True
near_ten(21) => True
# ワンライナー
def near_ten(num)
puts num % 10 <= 2 || num % 10 >= 8 ? "#{num}はTrue" :"#{num}はFalse"
end
注意しなければいけないのは、10の倍数からの差が2以内というところです。
あまり考えずにやってしまうと、if文の条件は num % 10 <= 2 だけで十分だと思ってしまいます。しかし、これだと、18,19が引っかかりません。18,19は10との差は8,9ですが、20からの差は2,1なので、これらも引っ掛けなければなりません。
そこで、num % 10 >= 8 をif文の条件に加えてあげなければなりません。