LoginSignup
0
0

More than 1 year has passed since last update.

本日の基礎練習問題(22/3/24)

Posted at

問題

メソッドに3つの整数a b cを与えます。
・「aとbの差が1」または「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

ヒント
返り値を絶対値(この場合は正の整数)に変換する際はabsメソッドを使いましょう。

私の回答

def number_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

解説

まずa,b,cの整数の差をabsメソッドを使用しx,y,zに代入。
その後「aとbの差が1」または「aとcの差が1」であり、かつ「bとcとの数値の差が2以上」の場合のif文を作り、
それ以外は"False"の出力する。

模範回答

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

模範解説

まず、2~4行目の記述で、abcそれぞれの差分を算出し、絶対値に変換します。

そして6行目のx == 1 && z >= 2で、「aとbの差が1」であり、かつ「bとcとの数値の差が2以上」を検討しています。
同様に8行目のy == 1 && z >= 2で、「aとcの差が1」であり、かつ「bとcとの数値の差が2以上」を検討しています。

条件式は、以下のようにまとめて記述することもできます。

if (x == 1 && z >= 2) || (y == 1 && z >= 2)
  puts "True"
else
  puts "False"
end

感じたこと

数値の差を求めるabsメソッドを学習できたことは嬉しい。
日々いろいろなメソッドに触れていく中で、メソッド数の多さに驚いている。
毎日1つでもメソッドを覚えられるよう精進していきたい。

もしアドバイスやご指摘等ございましたらぜひお願いします!!

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0