[Ruby]dorill67

プログラミング

問題

正の整数を入力します。その整数が、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文の条件に加えてあげなければなりません。

タイトルとURLをコピーしました