yuuki blog

プログラミング をアプトプットしています。

Ruby 条件演算子

問題

3桁の正の整数を入力します。その整数の「百の位・十の位・一の位の和」について、
10の倍数(0,10,20,30...)からの差が
・2以内であるときは"True"
・それ以外は"10の倍数との差は○です"
と表示される問題です。

出力例:

near_ten(117)→True
near_ten(123)→10の倍数との差は4です
near_ten(111)→10の倍数との差は3です

自分の回答

def near_ten (int)
  hun = int / 100        #100の値を求めます
  ten = int / 10 % 10   #10の値を求めます
  one = int % 10      #1の値を求めます
  sum = hun + ten + one  #和を求めます
  if sum >= 8 || sum <= 2 #値が2以下又は8以上なら"true"を返します
    puts "true"
  elsif
    sum <= 5 
    puts "10の倍数との差は#{sum}です"
  else
    puts "10の倍数との差は#{10 - sum}です"
  end
end

模範回答

def near_ten(num)
  total = (num/100 % 10) + (num/10 % 10) + (num % 10)
  remainder = total % 10
  if remainder <= 2 || remainder >= 8
    puts "True"
  elsif remainder <= 5
    puts "10の倍数との差は#{remainder}です"
  else 
    puts "10の倍数との差は#{10 - remainder}です"
  end
end